2014-08-27 58 views
0

我需要在應用程序啓動時加載JavaFX TreeView數據。問題是節點查找()方法總是返回null。JavaFX-8 - 無法在SplitPane容器中找到任何節點

CODE

public class Main extends Application { 

    public static final String APPLICATION_NAME = "testapp" ; 

    public static void main(String args[]) { 
     launch(args); 
    } 

    @Override 
    public void start(Stage primaryStage) throws Exception { 
     String fxml = "/fxml/main-window.fxml"; 
     String globalCss = "/styles/main.css"; 
     FXMLLoader loader = new FXMLLoader(getClass().getResource(fxml)); 
     Parent root = (Parent) loader.load(); 
     Scene scene = new Scene(root); 
     primaryStage.setScene(scene); 
     primaryStage.getScene().getStylesheets().add(globalCss); 
     primaryStage.setMaximized(true); 

     TreeView treevw = (TreeView) scene.lookup("#treevw"); 
     // lazy init here 

     primaryStage.show(); 
    } 
} 

FXML

http://pastebin.com/aC2gHMjp

java version "1.8.0_20" 
Java(TM) SE Runtime Environment (build 1.8.0_20-b26) 
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode) 

我已經找到this解決方案,但它不適合我(兩者)工作。

任何人都可以請幫忙解決這個問題嗎?

回答

4

lookup(...)通常會返回null直到創建CSS通道,這通常意味着您需要在顯示階段(但可能之後)之後執行此操作。

但是,這真的不是做你想做的事的正確方法。定義一個控制器,在TreeView上設置一個fx:id,並在控制器的initialize()方法中執行初始化。

+0

它的工作。謝謝! – tty 2014-08-27 16:38:12

相關問題