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

Mrbls 2013-10-10 06:33:42
问题简单点说就是:怎么使用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);
}
}
...全文
203 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mrbls 2013-10-13
  • 打赏
  • 举报
回复
好吧,问题自己解决了,重写了paintComponent()方法后再设置背景色就不行了,要在重写的方法中先调用super.paintComponent();然后就可以了,原理不是太懂,可能paintComponent()方法的具体实现我不清楚,我只知道书上说要绘制自己的组件就要重写这个方法,可能设置背景色不属于绘制组件的一部分吧。
Mrbls 2013-10-13
  • 打赏
  • 举报
回复
回5楼:1的地方不是在设置JFrame的背景色,当时我是在想设置面板MyPanel的背景色,代码中我第一次注释掉的地方是设置JFrame的背景色,那个是可行的,因为要试验的东西挺多的,那个和现在的问题没什么太大关系,就给注释掉了。
逍遥jc 2013-10-11
  • 打赏
  • 举报
回复
1的地方直接设置JFrame的背景色可行么?学GUI很早之前的事了,不知道还记不记得。
Mrbls 2013-10-10
  • 打赏
  • 举报
回复
按你说的,我把MyPanel中重写的paintComponent()方法整个注释掉了,确实出现绿色了,这个我不明白,书上说我应该重写这个方法才能绘制自己的组件,没有既能绘制自己的组件又能填充背景色的方法吗?
Mrbls 2013-10-10
  • 打赏
  • 举报
回复
我看书上说panel这个词,翻译过来不是窗格?那叫什么?我期待的效果就是,框架是正常的背景色灰色;上边的panel组件(这么叫?)占地200*200,距框架边框左200,顶100,背景色绿色;这个组件里边有个rec正方形(这个不是才叫组件吗?),填充的黄色。我还没有做出来,所以没有图,只能描述出来,希望你能看懂,我刚看书学到这里,有的概念不太清楚,有错的地方希望您指出来。
失落夏天 2013-10-10
  • 打赏
  • 举报
回复
楼主先给我解释一下什么叫“窗格”吧。这个我真的不明白。。。。 如果第一处设置的话就把JPanel中重写的方法去掉就显示背景色了,要不你那是写两遍当然不会有第一处的效果。 第二处设置的话一样得把下面绘背景的取消,要不也是等于画背景画了两遍。。 或者楼主期望什么样的结果,发图看一下
Mrbls 2013-10-10
  • 打赏
  • 举报
回复
按我自己的理解,就是在1和2的地方设置,但是都没有成功,希望知道的告诉一下,谢谢了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧