2016-11-28 6 views
0

Ich habe eine GUI, die ich erstellt habe, und ich möchte eine ProgressIndicator hinzufügen, wenn die Anwendung etwas im Hintergrund tut. Ich habe eine Tab im Konstruktor ähnlich der folgenden erstellt:Wie kann ich einen Knoten zu einer HBox innerhalb eines Tab JavaFX hinzufügen?

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); 
    } 
... 

Später habe ich eine Taste drücken, die die Anwendung macht einen Hintergrund-Task gestartet wird, und ich möchte ein ProgressIndicator zum Zentrum von hinzufügen die BorderPane. Ich habe versucht, so etwas wie die folgenden:

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

Ich würde denken, dass dies funktioniert jedoch getContent ein Node zurückkehrt, und ich kann getChildren nicht auf diesen Node nennen. Wie kann ich auf die BorderPane zugreifen, um eine weitere Node hinzuzufügen, ohne die BorderPane ein Feld in meiner Klasse zu machen?

+0

Warum gehst du nicht einfach machen die 'eine Instanzvariable BorderPane', statt einer lokalen Variablen? –

+0

Ich könnte, ich fühle mich einfach wie eine schlampige Lösung, deshalb habe ich es in der Frage spezifiziert, aber du hast Recht, das werde ich tun, wenn ich keinen anderen Weg finde, es zu tun. – mpowell48

+0

Ich habe diesen letzten Satz verpasst. Ich sehe nicht wirklich, warum du das "schlampig" denkst. –

Antwort

0

So stellen Sie die Grenze eine Instanzvariable Bereich:

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)); 
    } 
} 
Verwandte Themen