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 по умолчанию (modena).
Как получить текущую тему и применить к этому диалоговому окну?
Я узнал, как получить стили из текущей темы
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", "");
Диалог скопирует таблицы стилей с родительского этапа и добавит их на свой собственный этап.
Оно работает. Но я сомневаюсь, что это "правильный" способ. Должны быть и другие решения.
Вы можете установить набор стилей по умолчанию для компонента, вызвав:
getStylesheets().add(new File("conf/application.css").toURI().toURL().toExternalForm());
Вы попробовали это?