2013-11-20 1 views
1

Как создать собственный диалог с FXML в JavaFX?Как создать собственный диалог с FXML в JavaFX?

В образцах над сеткой я вижу в основном что-то вроде этого

@Override 
public void start(Stage stage) throws Exception { 
    Parent root = 
     FXMLLoader.load(
     getClass().getResource(getClass().getSimpleName() + ".fxml")); 
    Scene scene = new Scene(root); 

т.е. FXML загружается внутри приложения start() и строит корневой узел.

Но что делать, если я продляю этап? Где загрузить с FXML? В конструкторе? Или в initStyle()? Или каким-то другим способом?

ответ

1

Вы можете использовать приведенный ниже код в главном классе:

FXMLLoader loader = new FXMLLoader(getClass().getResource("Sample.fxml")); 
Parent root = (Parent)loader.load(); 

//Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml"));   
Scene scene = new Scene(root);   
stage.setScene(scene); 
stage.show(); 

SampleController controller = (SampleController)loader.getController(); 
controller.setStageAndSetupListeners(stage); 

После этого в SampleController сделать функцию setStageAndSetupListeners(), которые будут принимать вашу сцену, и теперь вы использовать его легко.

+1

Почему так много линий? Возможно ли создать диалог, чтобы его можно было вызывать с помощью 1-2 строк кода? –

+0

Вы должны получить Loader, чтобы вы могли использовать сцену и передать другой fxml для взаимодействия между основным диалогом для sub Dialog. –

+0

'Родительский корень = (родительский) loader.load();' может быть записан 'Parent root = loader. load(); ' – Aerospace