java - JPanel没有在java中调用paintComponent
问题描述
我已经为此工作了几个小时,但它不起作用。我想让一个像素出现在屏幕上,但是绘画组件不起作用我不明白为什么。该setupFrame
方法是从 main 方法调用的。
public static void setupFrame()
{
JFrame frame = new JFrame("graphicsTest");
JPanel panel = new JPanel();
panel.setBounds(0, 0, 1080, 1080/2);
frame.add(panel);
frame.pack();
frame.setSize(1080, 1080/2);
frame.setVisible(true);
frame.setResizable(false);
frame.repaint();
}
@Override
public void paintComponent(Graphics g) {
g.fillRect(0, 0, 50, 50);
}
解决方案
您正在重载paintComponent()
您创建的类中的 (我们称之为MyPanel
),但您正在创建另一个类的实例:
JPanel panel = new JPanel();
所以这里没有 MyPanel 的实例,也没有调用该方法。您需要使用重载 paintComponent 方法的类:
MyPanel panel = new MyPanel();
或者(这应该是等价的):
JPanel panel = new MyPanel();
推荐阅读
- clojure - Leiningen 中是否有与 `clj -m` 等效的内容
- c# - 有没有办法将 UWP 文本框设置为覆盖?
- c - 如何确定两个文件是否共享一个物理设备(而不是一个逻辑设备/文件系统)
- angular - 尽管 DELETE 出错,实体仍从缓存中删除
- ruby-on-rails - 为什么我在初始化外观类时在 Rails 控制器中出现名称错误?
- c# - 如何处理此错误 关键字“表”附近的语法不正确。”
- google-cloud-platform - 如何在后续的 Terraform 步骤中使用尚不可用的信息?
- excel - 如果单元格包含则
- python - 对于从服务器收到的每个字符串,如何在新行上正确格式化字符串
- python - 如何高效快速地从字符串元素数组中找到有效的组合进行员工排班?