GUI怎么设置背景颜色?

代码如下:importjava.awt.*;importjavax.swing.*;publicclassBackgroundTest{publicstaticvoidm... 代码如下:
import java.awt.*;import javax.swing.*;
public class BackgroundTest {
public static void main(String[] args) { new KFrame(); }
}
class KFrame extends JFrame {
KFrame() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 关闭窗口后操作为退出程序 setSize(500, 500);// 程序窗口尺寸 setVisible(true);// 窗口显示 JPanel component = new KComponent(); add(component); component.setBackground(Color.YELLOW);//设置背景颜色(可是没有用) }
}
class KComponent extends JPanel { public void paintComponent(Graphics g) { g.drawString("King's", 150, 150);
}
}
如上,为什么我的那句component.setBackground(Color.YELLOW);想设置背景颜色为黄色,可是为什么没用?写了当没写,问题出在哪?
展开
 我来答
匿名用户
2013-09-22
展开全部
因为绘制背景色的过程就是在 paintComponent()方法中实现的你把这个方法重写了,但是自己只定义了一个写文字的动作,所以调用你重写的这个paintComponent就不会重新绘制背景色了你可以把重写的部分改成下面的代码:添加一行 super.paintComponent(g); 即父类的方法也执行,执行完父类的方法(包括了绘制背景色)后再执行你自己定义的写一行文字的方法就可以了:
class KComponent extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("King's", 150, 150);
}
}
更好的方法是你干脆把你重写那个方法去掉,然后文字输出通过JLabel来添加到Component面板上而不是直接绘制的方式
class KComponent extends JPanel {
// public void paintComponent(Graphics g) {
// g.drawString("King's", 150, 150);
// }
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式