java - JPanel 不调用 java 中的paintComponent

标签 java swing

我已经为此工作了几个小时,但没有成功。 我想让屏幕上出现一个像素,但绘画组件不起作用我不明白为什么。 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);
}  

最佳答案

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

JPanel panel = new JPanel();

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

MyPanel panel = new MyPanel();

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

JPanel panel = new MyPanel();

关于java - JPanel 不调用 java 中的paintComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58198196/

相关文章:

java - Swing 线程问题?

java - CentOS 屏幕键盘未显示 Java Swing 文本输入字段

java - 如何将搜索结果全部集中在一个框中?而不是(JOptionPane单独的框)

java - 如何从列表中隐藏 jcombobox 项目,但仍使用它从数据库表中获取数据

java - 是否可以在布局中放置多张卡片?

java - JAVA IF ELSE语句在我的代码中导致错误

java - 试图为我的查询找到合适的正则表达式

java - JDBC - 结果集数据处理 : Strange behaviour : default fetchsize returned

java - 通配符和类型变量有什么区别?

java - 如何在单独的方法中编辑字符串中的特定字符?