我将Java / JavaFX应用程序部署为Windows和Mac的本机安装。捆绑的运行时当前是8.121。您可以在此处找到安装程序和Java代码:George download
在过去的15个月里,我每周都在教室里使用这个应用程序(有20个孩子),从一开始我就看到了以下问题:
按钮不时消失。也就是说,它们只是呈现为白色矩形,使它们几乎不可见。背景和标签/文本都消失了。
这主要发生在鼠标悬停上,但后来无法自行纠正。 按钮仍在那里,可点击。
它只是偶尔发生,但似乎在某些机器上比其他机器更多。 Windows 10现在,但以前在小型Windows 7机器上也是如此。
我认为我自己无法重现它,也从未在Mac上看过它。
现在有时也会使用其他小部件/控件,甚至在任何用户交互之前。
这周围有一些已知问题吗? 有没有其他人描述类似的东西? 它可能与某些微小的操作系统调整有关吗?
任何想法或想法都会非常感激。
更新(2018-11-06)
刚开始使用Windows 10在VirtualBox中用Java 8测试我的应用程序,现在我自己得到了渲染错误。 HURRA!
查看-Dprism.xxx选项,我发现了这篇文章: http://werner.yellowcouch.org/log/javafx-8-command-line-options/
使用-Dprism.threadcheck=true
进行测试,我得到了很多
"错误:PrismPen / FX线程共同运行:DIRTY:false"堆栈跟踪。
虽然设置-Dprism.dirtopts=false
并不能解决这个问题。
但与-Dprism.order=sw
一起运行。但对于可能需要进行一些要求渲染的应用程序(Turtle Geometry)来说,这不是一个好的解决方案。
将继续挖掘。
答案 0 :(得分:1)
我一直有同样的问题,我尝试更新到Java 10,但问题仍然存在。然后,我在java.exe上编辑了属性,在“兼容性”选项卡上,我将“覆盖高DPI缩放行为”设置为“系统(增强)”,问题似乎已经消失(或者至少它没有再次发生)尚未)。
答案 1 :(得分:0)
我观察到了同一件事:手动消失后,视觉上消失了(但仍然可以使用)按钮和其他控件(标签除外),尤其是在窗口原始大小之外的区域中)
在我的情况下,-Dprism.dirtopts=false
减少了问题,但没有解决(无论如何,这并不是一个令人满意的解决方案)。
此外,我观察到某些TextField
控件也显示了渲染故障(看起来相同的文本被渲染了两次,但有一点偏移)。终于使我走上了正轨:
对于这些Platform.runLater(...)
控件,(从另一个线程)对TextField.setText(...)
的一些调用(来自另一个线程)只是一个丢失的TextField
,这导致了这一情况(即使对于{ {1}},它位于完全不同的位置-也在小部件层次结构中。
我知道,这可能不是所有情况下的答案,但希望它至少可以帮助其他一些面临相同问题的人(花了我一整天的时间来找出答案)。