ControlsFX ダイアログを使用して情報を表示していますが、アプリケーションのスタイルが青ではなく、ダイアログのスタイル (色、境界線) と一致しません。ボタンの色またはスタイルを変更する方法はありますか?
3 に答える
ノート
最近の質問で、今回はDialog
JDK8u40の初期リリースにバンドルされた新しいAPIに関して、インラインスタイルとルックアップの代わりにスタイルシートを使用して、ハックが少なく、よりクリーンなソリューションを提供しました。
openjfx-dialogs
したがって、公式リリース8u20、8u25、および8u31のダイアログを表示する方法と同様に、この質問を更新しています。
新しいソリューション
DialogPane
独自の css ファイルを使用してダイアログのデフォルト スタイルをカスタマイズするには、ダイアログが実際には新しいシーンを持つ新しいステージであり、ルート ノードがインスタンスであることを考慮する必要があります。
ダイアログインスタンスを取得したら、次のようにします。
@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());
ルールを定義するには、すでに使用されている記述子を知る必要があります。そのためには、 (パッケージ com.sun.javafx.scene.control.skin.modena の下で)dialog.css
内のファイルを探すか、リポジトリのソース コードに移動する必要があります。openjfx-dialogs.jar
ここでdialog
、alert
クラス セレクターのデフォルトのルールをオーバーライドするカスタム ルールを提供する必要があります。次のルールは、最初の回答のインライン スタイリングとまったく同じ効果があります。
.dialog > .dialog-pane {
-fx-background-color: greenyellow;
}
.dialog > .dialog-pane > .button-bar {
-fx-font-size: 24px;
-fx-background-color: indianred;
-fx-font-family: "Andalus";
}
.dialog > .dialog-pane > .content.label {
-fx-font-size: 16px;
-fx-font-weight: bold;
-fx-fill: blue;
}
.dialog:header > .dialog-pane .header-panel {
-fx-background-color: cadetblue;
-fx-font-style: italic;
}
.alert.confirmation.dialog-pane {
-fx-graphic: url("lock24.png");
}
Another solution:
dialog.getDialogPane().getScene().getStylesheets().add("css_name.css");