【问题标题】:Java JFrame not refreshed on Mac OSXJava JFrame 在 Mac OSX 上未刷新
【发布时间】:2016-03-28 18:54:54
【问题描述】:

我有一个包含 2 个 JFrame 的 Java 应用程序。一个仅用于预览并包含自定义 JComponent。另一个框架由几个输入字段组成,它们控制预览的输出。

我有各种输入字段的动作侦听器,它们强制使用重绘自定义 JComponent

previewRenderer.update(previewRenderer.getGraphics());

previewRenderer 是另一个 JFrame 上的自定义 JComponent。

这在 Linux 和 Windows 上运行良好,但在 Mac OSX 上,第二个 JFrame 根本没有更新。

我手头没有用于测试的 OSX 机器,但是如何强制重绘另一个 Frame,分别是自定义 JComponent?

提前感谢。

【问题讨论】:

  • 可能是线程问题。您是否确保所有触及视图的代码都在事件调度线程中运行?

标签: java macos swing


【解决方案1】:

试试改成

previewRenderer.repaint()

甚至可能

previewRenderer.repaint()
previewRenderer.revalidate()

取决于您在预览框架的组件中所做的更改。

【讨论】:

  • previewRenderer组件有一个特殊的paint方法需要调用。
  • 不确定你是如何实现的,但这些方法正在调用适当的方法来强制绘制/重新绘制整个组件,所以我认为它应该可以正常工作。但也许你已经尝试过?
  • 是的,它适用于 Linux,但我还不能在 Mac OS X 上进行测试。我需要这个才能在 Mac 上工作。
  • 好的,我明白了。我们为 Mac OS X 开发,我们就是这样做的,所以如果你在组件中没有做一些非常不同的事情,我认为你应该没问题 :)
猜你喜欢
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 2014-05-12
  • 2014-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多