1

私のe4 javafxアプリケーションは、メイン ウィンドウを表示する前にログイン ダイアログを表示します。

LifeCycleManager クラス

@PostContextCreate
void postContextCreate(Application app, IEclipseContext econtext){  

    //display login dialog extends org.eclipse.fx.ui.dialogs.TitleAreaDialog
    LoginDialog dialog = new LoginDialog(null, "Login", "Login title", "Message", "");
    int response = dialog.open();             

    if (response != Dialog.OK_BUTTON) {
         System.exit(0);
    }
    ....
}

ダイアログには、デフォルトの javafx スタイリング (モデナ) があります。

現在のテーマを取得してこのダイアログに適用するにはどうすればよいですか?

4

2 に答える 2

1

現在のテーマからスタイルシートを取得する方法を見つけました

import org.eclipse.fx.ui.services.theme.ThemeManager;

@Inject
ThemeManager themeManager;

ObservableList<URL> stylesheets =  themeManager.getCurrentTheme().getStylesheetURL();

次は、ダミー ステージを作成し、それにスタイルシートを追加します。

Scene scene = new Scene(new HBox());
Stage stage = new Stage;
stage.setScene(scene);
for (URL url : stylesheets) 
{
    stage.getScene().getStylesheets().add(url.toExternalForm());
}

次に、ステージを親ウィンドウ(最初のパラメーター)としてダイアログに設定します

LoginDialog dialog = new LoginDialog(stage, "Login", "Login title",
                  "Message", "");

Dialog は親ステージからスタイルシートをコピーし、独自のステージに追加します。

できます。しかし、それが「適切な」方法であるとは思えません。他の解決策があるはずです。

于 2015-03-26T12:28:13.510 に答える