2013-01-09 21 views
3

这里是我的代码:如何更改JFrame中组件的颜色?

public class JavaApplication7 extends JPanel 
{ 
    public static void main(String[] args) { 
     JPanel pan = new JPanel(); 
     JFrame frm = new JFrame(); 
     frm.add(new JavaApplication7()); 
     frm.setSize(500, 500); 
     frm.setBackground(Color.yellow); 
     frm.setForeground(Color.red); 
     frm.setVisible(true); 
     frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     pan.setSize(768,512); 
     pan.setVisible(true); 
    } 
    public void paintComponent (Graphics g){ 
     g.drawOval(50, 50, 50, 50); 
     g.setColor(Color.CYAN);  
    } 
} 

我想椭圆形改变颜色,但是当我运行我的程序它仍然是黑色的,而不是我想要的青色。

+0

不要忘记调用'super.paintComponent'在被覆盖的'paintComponent'方法首先调用,否则保证的广告,你会被张贴有关视觉异常下一:P也不要忘记创造并通过'SwingUtilities.invokeXXX'块操纵EDT上的Swing组件 –

+0

@DavidKroukamp首先感谢您的建议。虽然如果我把super.paintComponent()然后背景颜色消失我怎么能克服这个问题? –

+0

绘制图形对象的背景颜色,即'g.setColor(Color.red); g.fillRect(0,0,的getWidth(),的getHeight());' –

回答

4

您首先绘制椭圆形,然后更改颜色。这就是为什么你没有看到效果。 只要改变语句的顺序:

g.setColor(Color.CYAN); 
g.drawOval(50, 50, 50, 50);