java - 添加方法 paint() 时 JPanel 的背景颜色被灰色替换
问题描述
我编写了以下基本 Java Swing 示例,它是一个蓝色背景的 JPanel:
public class Chart1 extends JFrame {
private MainPanel1 main;
public Chart1() throws InterruptedException {
setSize(600,500);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
// CREATE AND ADD MAIN PANEL
main = new MainPanel1();
this.getContentPane().add(main, BorderLayout.CENTER);
// DRAW WINDOW
this.setVisible(true);
}
}
public class MainPanel1 extends JPanel {
public MainPanel1() {
setBackground(Color.BLUE);
}
}
我得到以下结果:
到现在为止还挺好。
现在我添加一个paint()
方法。源代码如下:
public class MainPanel1 extends JPanel {
public MainPanel1() {
setBackground(Color.BLUE);
}
public void paint(Graphics g) {
}
}
然后即使没有做任何事情,paint()
我也会得到灰色背景,为什么?我怎样才能解决这个问题?
解决方案
答案是paint(java 1.0 - 1.1 方法)调用JComponents 中的paintBackground。当您覆盖它时,它并没有调用所有的摆动绘制方法。但是如果你添加 super.paint(g),它看起来就像以前一样。
另外 - 请注意,JFrame 中的默认 ContentPane 已经是 JPanel。而不是用您的 JPanel 替换 ContentPane,您可以调用:
((JPanel) myFrame.getContentPane()).setBackground(Color.blue);
推荐阅读
- stream - 如何使用 twilio 双向流功能播放原始音频数据
- github - 使用 Jekyll 构建网站时出现页面构建错误
- ios - 有没有办法使用 ionic 以编程方式为 iOS 设置 wifi 权限?
- c++ - 包含智能指针的类的复制构造函数
- javascript - 如何在 chrome 上更改不安全(http)网站的站点设置?
- r - 将 2 级数据重构为 3 级数据
- c# - 通过不在 GROUP 中的过滤器过滤 SQL GROUP
- makefile - 运行生成文件的一部分
- php - 如何在 $variable 中获取 url 的最后一部分
- excel - Excel VBA graphQL http 请求“运行时错误 -2147012744 服务器返回了无效或无法识别的响应”