首先来看一段代码:

 
  1. package test; 
  2.  
  3. import java.awt.Color; 
  4.  
  5. import javax.swing.JFrame; 
  6.  
  7. public class TestJFrame extends JFrame { 
  8.     public TestJFrame() { 
  9.         setColor.GREEN); < /span>
  10.         setBounds(200200400300); 
  11.         setTitle("JFrame测试"); 
  12.         setVisible(true); 
  13.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  14.     }; 
  15.  
  16.     public static void main(String[] args) { 
  17.         new TestJFrame(); 
  18.     } 

 运行可以看到,窗口出来了,但是我们并没有看到窗口的背景色被设置为了GREEN绿色。这里呢,JFrame并不能说是一个容器,它只是一个框架,那么我们怎么给JFrame设置背景色呢?

方法一:我们可以使用getContentPane()方法得到JFrame的内容面板,设置该内容面板的背景色即可,代码如下:

 
  1. package test; 
  2.  
  3. import java.awt.Color; 
  4.  
  5. import javax.swing.JFrame; 
  6.  
  7. public class TestJFrame extends JFrame { 
  8.     public TestJFrame() { 
  9.         getContentPane().setColor.GREEN); < /span>
  10.         setBounds(200200400300); 
  11.         setTitle("JFrame测试"); 
  12.         setVisible(true); 
  13.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  14.     }; 
  15.  
  16.     public static void main(String[] args) { 
  17.         new TestJFrame(); 
  18.     } 

而更常见的一种方法呢,是先新建一个JPanel之类的容器,然后使用setContentPane()方法,把该容器设置为JFrame框架的内容面板,然后再在该中间容器上面添加其他组件即可。这里的JPanel就像中间介质,或者我们可以理解为JFrame为画板,JPanel之类的中间容器为画布,画布要绑定在画板上,然后我们在画布上面作画。代码如下:

 
  1. package test; 
  2.  
  3. import java.awt.Color; 
  4.  
  5. import javax.swing.JFrame; 
  6. import javax.swing.JPanel; 
  7.  
  8. public class TestJFrame extends JFrame { 
  9.     public TestJFrame() { 
  10.         // getContentPane().setColor.GREEN);< /span> 
  11.         JPanel pnBasic = new JPanel(); 
  12.         pnBasic.setColor.GREEN); < /span>
  13.         setContentPane(pnBasic); 
  14.         setBounds(200200400300); 
  15.         setTitle("JFrame测试"); 
  16.         setVisible(true); 
  17.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  18.     }; 
  19.  
  20.     public static void main(String[] args) { 
  21.         new TestJFrame(); 
  22.     } 

和上面代码运行效果一样,如下所示: