Extend JPanel and override paintComponent() to draw the background in that JPanel. Add your JTextFields and JTextAreas (both are equally "easy") to that JPanel just like you would any other JPanel.
Recommended reading: http://docs.oracle.com/javase/tutorial/uiswing/painting/
Edit after updated code: You shouldn't put the code that adds the JTextField inside the paintComponent() method. That's going to add a new JTextField to your JPanel every time it's painted, which is a lot! Instead, treat the PaintPane as you would any other JPanel and add the components to it just once, whenever you add it to the JFrame. Something like:
public class Test{
public static void main(String... args){
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//this JPanel paints its own background
JPanel myPanel = new PaintPane();
frame.add(myPanel);
myPanel.add(new JTextField("text field");
myPanel.add(new JButton("button"));
frame.setSize(500, 500);
frame.setVisible(true);
}
}