Стили диалогов JavaFX по умолчанию
Я ищу способ создать стиль диалога JavaFX по умолчанию (javafx.scene.control.Dialog
).
Я попытался получить DialogPane и добавить таблицу стилей, но она охватывает только небольшую часть диалога. Я бы предпочел стиль только с внешним файлом css и без добавления styleClasses поверх кода. Это будет выглядеть грязно (заголовок, контент, собственный контент на контенте и многое другое..)
Я уже много гуглил и нашел только примеры для ControlsFX, но так как Jdk8_40 JavaFX имеет свой собственный Диалоги я использую их сейчас.
какие предложения?
Edit:
поскольку Хосе переда опубликовал решение, я создал свой собственный диалог.стиль CSS. Я опубликую его здесь, потому что он охватывает весь диалог, и, возможно, кто-то хочет скопировать и вставить его. Отмечать.диалоговое окно-это уже заданное имя styleClass, поэтому вам не нужно применять свое собственное. Конечно, Жозе более подробно.
.dialog-pane {
-fx-background-color: black;
}
.dialog-pane .label {
-fx-text-fill: white;
}
.dialog-pane:header .header-panel {
-fx-background-color: black;
}
.dialog-pane:header .header-panel .label {
-fx-font-style: italic;
-fx-font-size: 2em;
}
1 ответов
вы можете стилизовать свои диалоги с помощью собственного css-файла, но для этого вам нужно учитывать, что диалог на самом деле является новым этапом, с новой сценой, а корневой узел -DialogPane
экземпляра.
Итак, как только вы создадите некоторый экземпляр диалога:
@Override
public void start(Stage primaryStage) {
Alert alert = new Alert(AlertType.CONFIRMATION);
alert.setTitle("Confirmation Dialog");
alert.setHeaderText("This is a Custom Confirmation Dialog");
alert.setContentText("We override the style classes of the dialog");
...
}
вы можете получить доступ к его диалоговой панели и добавить свою собственную таблицу стилей и свой собственный селектор классов:
DialogPane dialogPane = alert.getDialogPane();
dialogPane.getStylesheets().add(
getClass().getResource("myDialogs.css").toExternalForm());
dialogPane.getStyleClass().add("myDialog");
теперь фокус в том, чтобы знать все правила a Dialog
таблица стилей реализована по умолчанию.
и это трудная задача... поскольку они не находятся в modena.css
файл, как и для всех обычных элементов управления. Напротив, они находятся в modena.bss
file, двоичный файл, расположенный в jfxrt.банку под пакет.
после некоторого рытья мне удалось получить эти правила, поэтому ваш обычай myDialogs.css
файл будет выглядеть примерно так:
.myDialog{
-fx-background-color: #f9d900;
}
.myDialog > *.button-bar > *.container{
-fx-background-color: #a9e200;
}
.myDialog > *.label.content{
-fx-font-size: 14px;
-fx-font-weight: bold;
}
.myDialog:header *.header-panel{
-fx-background-color: #a59c31;
}
.myDialog:header *.header-panel *.label{
-fx-font-size: 18px;
-fx-font-style: italic;
-fx-fill: #292929;
}
и вы будете иметь свой стиль диалог:
обратите внимание, что будучи файлом bss в частных пакетах, эти селекторы могут меняться без уведомления в будущих выпусках.
редактировать
Я только что обнаружил, что .dialog-pane
селектор уже является частью Модены.в CSS в последнем 8u40 ранние версии, поэтому вы можете найти все селекторы и правила, применяемые к диалоговой панели.