2015-03-25 5 views
1

Приложение e4 javafx Приложение отображает диалоговое окно входа в систему перед основным диалоговым окном.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); 
    } 
    .... 
} 

Dialog имеет по умолчанию JavaFX стиль (Модена).

Как получить текущую тему и применить к этому диалоговому окну?

ответ

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", ""); 

Диалог будет копировать таблицы стилей из родительского этапа и добавить их к своей собственной сцене.

Это работает. Но я сомневаюсь, что это «правильный» способ. Должны быть и другие решения.

0

Вы можете установить styleset по умолчанию для компонента по телефону:

getStylesheets().add(new File("conf/application.css").toURI().toURL().toExternalForm()); 

вы ли попробовать это?

+0

В моем случае я не хочу добавлять таблицу стилей из определенного файла. Мне нужно получить стили из текущей темы (может быть много из них (темы)) и добавить их (таблицы стилей) в этап диалога. –

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