我已经使用JavaFX 2.2创建了一个应用程序,并希望切换到JavaFX8。使用JavaFX2.2,我的应用程序如下所示:
当使用JavaFX 8而不更改任何源代码时,它看起来像这样:
使用JavaFX8,某些节点根本不会显示(例如,条件1),有时会在随机单击滚动窗格后出现。另外,节点的大小不正确(比较步骤1和小的小点)。另一个问题是,当执行诸如添加节点之类的操作时,应用程序在JavaFX8中严重滞后。
不幸的是,我根本没有收到任何错误消息,而且我几乎不知道要使该应用程序在JavaFX8中运行必须修复的内容。任何帮助/想法/提示将不胜感激。
可能的问题(?):
我在应用程序中经常使用Platform.runLater()。这在JavaFX 8中是否有所改变?
在JavaFX2.2中,将节点添加到滚动窗格后会自动计算节点的大小(例如,包含文本的堆栈窗格)。假设我添加了一个位置为x和y的节点。只有在绘制JavaFX之后,我才能获得其高度和宽度(boundsInParent.getHeight())。这也是为什么我经常使用Platform.runLater()来布局节点的原因。 JavaFX 8中的这种行为是否已更改?
编辑:“错误”与CSS样式相关。如果我删除添加到节点的样式表,则一切正常(当然,除了节点的样式外)。特别是我必须删除的命令具有以下形式:
getStylesheets()。add(ClassName.class.getResource(“ CSSFile.css”)。toExternalForm());
最佳答案
我发现了错误:在我的CSS样式表(用于节点)中有一个负值。删除该值使它像在JavaFX 2.2中一样工作。确切地说,我必须更改以下内容:
-fx-border-width: 5 -1 0 5 ;
至
-fx-border-width: 5 0 0 5 ;
关于java - 从JavaFX 2.2到JavaFX8,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25623893/