2014-11-11 4 views
0

Я создал приложение 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.

Надеюсь, это поможет понять проблему.

+0

Является ли CSS присутствующим в файле jar? Если это так, возможно, разместите код, который вы используете, чтобы добавить таблицу стилей в сцену. –

+0

Я обновил вопрос с дополнительными пояснениями, кодом Java и другими стилями CSS. Как я объяснил там, проблемы с CSS, кажется, более часто встречаются с «общими» классами стиля (такими как «.combo-box-popup», «.check-box», «.scroll-bar», ...). – user3608517

+0

Вы работаете в разных версиях JDK в разных сценариях? Были некоторые ошибки, препятствующие добавлению стиля к комбо-боксам в ранних версиях JavaFX. –

ответ

0

После внесения некоторых изменений в файл CSS я понял, что JavaFX 8 изменил некоторые функции в CSS (например, фоны) и добавил некоторые новые стили по умолчанию (такие как белый текст в ComboBoxes).

Наконец, я изменил и добавил некоторые стили в свой CSS-файл. Теперь CSS работает хорошо. Благодаря!

Смежные вопросы