2016-11-28 67 views
0

我有一個我創建的GUI,當應用程序在後臺執行某些操作時,我想添加一個ProgressIndicator。我創建了一個類似於以下構造一個Tab如何將節點添加到標籤JavaFX內部的HBox?

public class myGUI { 
    Tab myTab; 

    myGUI() { 
     myTab = new Tab("My Tab"); 

     HBox view = new HBox(); 
     VBox left = new VBox(); 
     BorderPane right = new BorderPane(); 

     /*A lot of other things are declared that go in left and right*/ 

     view.getChildren().addAll(left, right); 
     myTab.setContent(view); 
    } 
... 

後來,我有一個按鈕,按下啓動應用程序做一個後臺任務,我想一個ProgressIndicator添加到市中心BorderPane。我試過類似如下:

private void handleMyAction(MouseEvent e) { 
    myTab.getContent().getChildren().get(1).setCenter(new ProgressIndicator(-1.0f)); 
} 

我會覺得這樣的作品,然而,getContent返回Node,我不能對Node調用getChildren。我如何訪問BorderPane以添加另一個Node,而不會使BorderPane成爲我班的字段?

+0

你爲什麼不只是使'BorderPane'一個實例變量,? –

+0

我可以,我只是覺得這是一個馬虎的解決方案,這就是爲什麼我在問題中指定它,但你是對的,如果我找不到另一種方法去做,我會這樣做。 – mpowell48

+0

我錯過了最後一句話。我真的不明白爲什麼你認爲這是「馬虎」。 –

回答

0

只是要邊框窗格中的一個實例變量,而不是一個局部變量

public class MyGUI { 
    private Tab myTab; 
    private BorderPane right ; 

    MyGUI() { 
     myTab = new Tab("My Tab"); 

     HBox view = new HBox(); 
     VBox left = new VBox(); 
     right = new BorderPane(); 

     /*A lot of other things are declared that go in left and right*/ 

     view.getChildren().addAll(left, right); 
     myTab.setContent(view); 
    } 

    private void handleMyAction(MouseEvent e) { 
     right.setCenter(new ProgressIndicator(-1.0f)); 
    } 
} 
相關問題