首页 > 解决方案 > 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);
}  

标签: javaswing

解决方案


您正在重载paintComponent()您创建的类中的 (我们称之为MyPanel),但您正在创建另一个类的实例:

JPanel panel = new JPanel();

所以这里没有 MyPanel 的实例,也没有调用该方法。您需要使用重载 paintComponent 方法的类:

MyPanel panel = new MyPanel();

或者(这应该是等价的):

JPanel panel = new MyPanel();

推荐阅读