2016-11-28 69 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)); 
    } 
} 
相关问题