我的用例如下:
我做的事情如下:
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代码没有显示的事实有关(或者平台是关闭的,但我不知道如何检查这个或为什么它会关闭)。 / p>
为什么会这样?也许我做转换的方式不好?是否存在这样的问题:在切换期间的几毫秒内JFXPanel无法显示?
更普遍的问题是Platform.runLater什么都不做?
答案 0 :(得分:1)
切换窗格时,没有FX节点是显示的场景图的一部分时,会有一小段时间。我的猜测是,如果FX应用程序线程此时正在处理场景脉冲,它会检测到没有活动的场景图并退出。
您可以通过调用
来阻止此行为Platform.setImplicitExit(false);
创建JFXPanel
后立即。