当前位置:编程学习 > JAVA >>

求助java窗格框架填充背景色的问题

问题简单点说就是:怎么使用setBackground()设置窗格(不是框架)的背景色。
import java.awt.*;
import javax.swing.*;
import java.awt.geom.*;

public class MyColorTest
{
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
MyFrame frame=new MyFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
// frame.getContentPane().setBackground(Color.red);
}
});
}
}
class MyFrame extends JFrame
{
public MyFrame()
{
Toolkit toolkit=Toolkit.getDefaultToolkit();
Dimension screenSize=toolkit.getScreenSize();
int width=screenSize.width;
int height=screenSize.height;
setTitle("MyColorTest");
setSize(width/2,height/2);
setLocationByPlatform(true);
MyPanel panel=new MyPanel();
panel.setBackground(Color.green);//*1*
add(panel);
}

}
class MyPanel extends JPanel
{
public void paintComponent(Graphics g)
{
this.setBackground(Color.green);//*2*
Graphics2D g2=(Graphics2D)g;
setSize(200,200);
setLocation(200,100);
Color yellow=Color.YELLOW;
g2.setPaint(yellow);
Rectangle2D rec=new Rectangle2D.Double(100,100,50,50);
g2.fill(rec);
}
}
--------------------编程问答-------------------- 按我自己的理解,就是在1和2的地方设置,但是都没有成功,希望知道的告诉一下,谢谢了 --------------------编程问答-------------------- 楼主先给我解释一下什么叫“窗格”吧。这个我真的不明白。。。。
如果第一处设置的话就把JPanel中重写的方法去掉就显示背景色了,要不你那是写两遍当然不会有第一处的效果。
第二处设置的话一样得把下面绘背景的取消,要不也是等于画背景画了两遍。。
或者楼主期望什么样的结果,发图看一下 --------------------编程问答-------------------- 我看书上说panel这个词,翻译过来不是窗格?那叫什么?我期待的效果就是,框架是正常的背景色灰色;上边的panel组件(这么叫?)占地200*200,距框架边框左200,顶100,背景色绿色;这个组件里边有个rec正方形(这个不是才叫组件吗?),填充的黄色。我还没有做出来,所以没有图,只能描述出来,希望你能看懂,我刚看书学到这里,有的概念不太清楚,有错的地方希望您指出来。 --------------------编程问答-------------------- 按你说的,我把MyPanel中重写的paintComponent()方法整个注释掉了,确实出现绿色了,这个我不明白,书上说我应该重写这个方法才能绘制自己的组件,没有既能绘制自己的组件又能填充背景色的方法吗? --------------------编程问答-------------------- 1的地方直接设置JFrame的背景色可行么?学GUI很早之前的事了,不知道还记不记得。 --------------------编程问答-------------------- 回5楼:1的地方不是在设置JFrame的背景色,当时我是在想设置面板MyPanel的背景色,代码中我第一次注释掉的地方是设置JFrame的背景色,那个是可行的,因为要试验的东西挺多的,那个和现在的问题没什么太大关系,就给注释掉了。 --------------------编程问答-------------------- 好吧,问题自己解决了,重写了paintComponent()方法后再设置背景色就不行了,要在重写的方法中先调用super.paintComponent();然后就可以了,原理不是太懂,可能paintComponent()方法的具体实现我不清楚,我只知道书上说要绘制自己的组件就要重写这个方法,可能设置背景色不属于绘制组件的一部分吧。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,