Я создал приложение JavaFX Maven с некоторыми файлами ресурсов (в папке проекта «src/main/resources»). Приложение хорошо работает в среде NetBeans. Однако, когда автономный JAR-файл построен и я копирую его в другую папку, визуальные элементы приложения (ComboBoxes, TextFields, VBoxes, ...) отображаются неправильно (разные цвета, неправильное заполнение, ...).JavaFX развернул проблемы приложений со стилями CSS
Например, this screenshot показывает правильную визуализацию (полученную в среде Netbeans) и this screenshot нет. Здесь разница заключается в цвете элементов, зависающих на ComboBox (белых в неправильной версии) и размера панели ComboBox. Эти стили присутствуют в файле CSS (в разделе «src/main/resources/styles»).
Я не понимаю, почему CSS не применяется правильно в развернутом приложении JavaFX Maven. Некоторые стили все еще работают (например, стили кнопок), но другие нет (например, тексты ComboBoxes).
Что делать, чтобы предотвратить это?
UPDATE:
файл CSS присутствует в файле JAR, потому что некоторые стили (такие как кнопки стилей) правильно загружены в приложение (за пределами NetBeans). Вот код, я использую, чтобы загрузить таблицу стилей в JavaFX Scene:
scene.getStylesheets().add(this.getClass().getResource("/styles/styles.css").toExternalForm());
Файл «styles.css» сохраняется в «SRC/основной/ресурсы/стили/styles.css».
В качестве примера, следующий стиль применяется в Java-код:
Button save = new Button("Save");
save.getStyleClass().add("primary-button"); // -> It works
Стили, которые не работают, включают те, которые не имеют прямого styleclass. Они затрагивают все ComboBoxes, CheckBoxes и т.д .. Например:
.combo-box-popup {
-fx-min-width: 555px;
}
.combo-box-popup .list-view {
-fx-min-width: 555px;
}
.combo-box-base {
-fx-background-color: transparent, transparent, transparent, white;
-fx-border-width: 1;
-fx-border-color: #666666;
-fx-font-family: "Roboto Light";
-fx-font-size: 14px;
-fx-fill: #666666;
}
.combo-box .arrow {
-fx-background-color: #979797;
-fx-background-radius: 0;
}
.combo-box .arrow-button {
-fx-background-color: #d8d8d8;
-fx-background-radius: 0;
}
.combo-box .arrow-button:hover {
-fx-background-color: #e1e1e1;
-fx-background-radius: 0;
}
.combo-box-popup .list-view .list-cell:filled:selected, .combo-box-popup .list-view .list-cell:filled:selected:hover {
-fx-background-color: #6995df;
}
.combo-box-popup .list-view .list-cell:filled:hover {
-fx-background-color: #f3f3f3;
}
Netbeans IDE версия: 8.0.1.
Версия JavaFX: 8 (от JDK 1.8.0_25).
Компьютер JRE версия: 1.8.0_25.
Надеюсь, это поможет понять проблему.
Является ли CSS присутствующим в файле jar? Если это так, возможно, разместите код, который вы используете, чтобы добавить таблицу стилей в сцену. –
Я обновил вопрос с дополнительными пояснениями, кодом Java и другими стилями CSS. Как я объяснил там, проблемы с CSS, кажется, более часто встречаются с «общими» классами стиля (такими как «.combo-box-popup», «.check-box», «.scroll-bar», ...). – user3608517
Вы работаете в разных версиях JDK в разных сценариях? Были некоторые ошибки, препятствующие добавлению стиля к комбо-боксам в ранних версиях JavaFX. –