2015-05-08 2 views
0

Чтобы ознакомиться с компоновщиком сцен, я добавил строку строки и два numberaxis как узлы в стеке с создателем сцены. Родительский узел будет загружен в mainApp.java:Как получить Stackpane из основного класса в классе контроллера?

public class CsvCommander extends Application {  
 
    @Override 
 
    public void start(Stage stage) throws Exception {   
 
     Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));   
 
     Scene scene = new Scene(root);   
 
     stage.setScene(scene); 
 
     stage.show(); 
 
    } 
 
    
 
    public static void main(String[] args) { 
 
     launch(args); 
 
    } 
 
}

Теперь, для дальнейших операций я хочу, чтобы получить stackpane родителя в FXMLDocument.fxml, но я не знают, как ...

например

StackPane контейнер = FXMLLoader.load (GetClass(). GetResource ("FXMLDocument.fxml") или тому подобное.

Как я могу получить мой корневой узел или stackpane в контроллере пройти?

+0

Если верхний родительский узел в FXML файл является Stackpane, что вы хотите получить, то 'root' переменной в строке' Родитель корень = FXMLLoader.load (GetClass() getResource ("FXMLDocument .fxml "))' является Stackpane. Вы можете просто downcast как 'StackPane container = (StackPane) root;' –

ответ

1

Put fx:id на корневом элементе в файле FXML, а затем ввести его в контроллер таким же образом, как и другие элементы:

FXML файла:

<!-- imports etc --> 
<StackPane xmlns="..." fx:controller="com.example.MyControllerClass" fx:id="container"> 
    <!-- nodes etc --> 
</StackPane> 

Контроллер:.

public class MyControllerClass { 

    @FXML // will be initialized by FXMLLoader 
    private StackPane container ; 

    public void initialize() { 
     // do something with container.... 
    } 
} 
+0

очень спасибо! теперь он хорошо работает ... – Ramses

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