从JavaFX 2.2到JavaFX8

时间:2014-09-02 12:52:16

标签: java javafx javafx-2 javafx-8

我已经使用JavaFX 2.2创建了一个应用程序并希望切换到JavaFX 8.使用JavaFX2.2我的应用程序看起来像这样:

JavaFX 2.2

在不更改任何源代码的情况下使用JavaFX 8时,它看起来像这样:

JavaFX8

对于JavaFX8,一些节点根本不显示(例如标准1),有时在滚动窗格上随机点击后出现。此外,节点的大小不正确(比较步骤1和小的小点)。另一个问题是,当执行诸如添加节点之类的操作时,应用程序在JavaFX8中会严重滞后。

不幸的是我根本没有得到任何错误消息,我几乎不知道我必须修复什么才能使应用程序在JavaFX8中运行。任何帮助/想法/提示将不胜感激。

可能的问题(?):

  • 我在我的应用程序中经常使用Platform.runLater()。这可能在JavaFX 8中有所改变吗?
  • 在JavaFX2.2中,节点的大小(例如包含文本的stackpane)在将其添加到滚动窗格后自动计算。让我们说我添加一个位置为x和y的节点。只有在JavaFX绘制完之后,我才能得到它的高度和宽度(boundsInParent.getHeight())。这也是我经常使用Platform.runLater()来布局节点的原因。在JavaFX 8中是否更改了此行为?

编辑:" bug"与css样式相关联。如果我删除添加到节点的样式表,一切正常(当然除了节点的样式)。特别是我必须删除的命令具有以下形式:

getStylesheets()添加。(ClassName.class.getResource(" CSSFile.css")toExternalForm());

1 个答案:

答案 0 :(得分:1)

我发现了错误:我的css样式表中有一个负值(用于节点)。删除该值使其像在JavaFX 2.2中一样工作。确切地说,我必须改变以下内容:

-fx-border-width: 5 -1 0 5 ;

-fx-border-width: 5 0 0 5 ;