java - 谁在调用 paintComponent?

标签 java swing

由于某种原因,我的 paintComponent(Graphics g) 方法被无限调用。我似乎无法分辨谁在调用它,即使我在调用中转储 StackTrace(这是一个已调度和处理的事件)。

有什么简单的方法可以查明是谁触发了事件?

更新:我找到了原因,现在我明白了原因。谁回答正确,谁就会得到问题的答案。

这是导致问题的代码:

@Override
public void paintComponent(Graphics g)
{
    myJButton.setIcon(ResourceLoader.getImageIconWithLocale(MY_BUTTON_IMAGE));
    super.paintComponent(g);
}

仅供引用:这真的很棘手!!看代码不是很明显。我做了一个错误的假设。

最佳答案

我不知道这是哪个组件,但在绘制例程中为按钮设置图标是个坏主意。它肯定会导致按钮被重新绘制。如果按钮是组件的子组件,则设置按钮会使组件无效,从而导致无限循环。

将图标设置在其他地方,例如最初设置对话框/窗口的地方。

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

相关文章:

java swing 应用程序 - 如何设置面板中组件的高度(和宽度)

java - 使用java自定义处理图标

java - Java中的键值观察

java - 如何从文本文件读取数据然后用新数据覆盖它?

java - 如何在 Wildfly 服务器上运行的测试中获取 sonarqube 代码覆盖率

java - JButton ActionListener 不起作用(在 Eclipse 插件中)

java - 如何使用自定义 TableCellEditor 通过单击选择表格行?

java - 在tomcat上部署时获取货币符号的特殊字符

java - 在 JVM 中加载数千个类是否会影响方法执行的性能

java - 如何在 jframe java swing 中调整 jscrollpane 的大小?