0
我的使用情况如下:JavaFX平台似乎是死的(关闭/坠毁)
- 我有9行的GridBagLayout的1列
- 前8行包含JPanels
- 最后一行含有JFXPanel
- 欲切换JFXPanel与任何JPanels的(用于显示HTML,在下面的代码称为htmlPanel)
I D类似于:
if(htmlToFront){
gridBagConstraints.gridy = i - 1;
}
else{
gridBagConstraints.gridy = 8;
}
jPanel1.add(htmlPanel, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
//some other gridbag initializations
if(htmlToFront){
gridBagConstraints.gridy = 8;
}
else{
gridBagConstraints.gridy = i - 1;
}
jPanel1.add(jPanel, gridBagConstraints);
该开关是否正确完成 - JFXPanel和JPanel位于正确的位置。但是几次开关后,场景就不再显示了。我的意思是,一两个开关后,一切正常,我的htmlPanel内的html代码正常显示。但是在另外几个开关之后(并且在开关之前等待几秒钟),html代码不再显示。
我做了一些测试,似乎Platform.runLater从未调用任何Runnable对象发生此问题后。这就像它被困在另一份工作上,我猜这与html代码没有显示(或者平台已关闭,但我不知道如何检查它或为什么会关闭)有关。
为什么会发生这种情况?也许我做开关的方式不好?在切换过程中几毫秒内JFXPanel不可显示是否存在问题?
更普遍的问题是为什么Platform.runLater不做任何事情?
您正在混合JavaFX和Swing的任何具体原因?仅使用一个可能会更简单。 无论如何 - 发布包含任何“Platform.runLater”或“SwingUtilities.invokeLater”的组件可能有助于查明问题...... – Itai
我需要Swing才能使用vlcj播放电影。 vlcj只能在Canvas中工作(我需要播放多达8个电影 - > 8个包含画布的jpanel)。我需要使用FX,因为我需要显示HTML5代码以及正在播放的电影。我只为调试目的调用了Platform.runLater,以查看平台是否仍然运行。我通常不会调用它 - 如果没有我调用Platform.runLater或SwingUtilities.invokeLater,则停止显示html代码。 – Anakin001
这也不是一个调整大小为0像素的问题,fxPanel和webView具有适当的大小... – Anakin001