Я сделал приложение с использованием JavaFX 2.2 и хочу перейти на JavaFX 8. С помощью JavaFX2.2 мое приложение выглядит следующим образом:
При использовании JavaFX 8 без изменения исходного кода это выглядит так:
С JavaFX8 некоторые узлы вообще не отображаются (например, Criterion 1) и иногда появляются после случайного нажатия на scrollpane. Кроме того, узлы имеют неправильный размер (сравните Шаг 1 и маленькую маленькую точку). Другая проблема заключается в том, что при выполнении таких действий, как добавление узлов, приложение сильно отстает от JavaFX8.
К сожалению, я вообще не получаю сообщений об ошибках, и я почти не понимаю, что мне нужно исправить, чтобы заставить приложение работать в JavaFX8. Любая помощь/идеи/подсказки будут очень признательны.
Возможные проблемы (?):
EDIT: "ошибка" связана с стилем CSS. Если я удалю таблицы стилей, которые добавляются к узлам, все работает отлично (за исключением, конечно, стиля узлов). В частности, команды, которые я должен удалить, имеют следующую форму:
. GetStylesheets() добавить (ClassName.class.getResource( "CSSFile.css") toExternalForm().);
Я обнаружил ошибку: у меня было одно отрицательное значение в моей таблице стилей CSS (которая использовалась для узлов). Удаление этого значения заставило его работать, как в JavaFX 2.2. Чтобы быть точным, мне пришлось изменить следующее:
-fx-border-width: 5 -1 0 5 ;
в
-fx-border-width: 5 0 0 5 ;
WeakReference
s в JavaFX 8. Если вы можете воспроизвести эту проблему (то есть простое приложение, которое хорошо работает в JavaFX 2.2, но имеет поведение, описанное выше, в JavaFX 8), возможно, я (или кто-то еще) еще) может помочь.Platform.runLater()
означает «Сделайте это в будущем в потоке приложений FX»; это не значит «Делать это после того, как были определены границы макета». Поэтому тот факт, что ваш код «работает» в JavaFX 2.2, на самом деле является лишь побочным эффектом реализации библиотеки. Разве вы не можете использовать стандартные методы верстки вместо того, чтобы пытаться самостоятельно управлять компоновкой?