2016-08-29 2 views
0

Wie es ist meine erste Anwendung in Javafx und versuchen, einen einfachen Rechner zu machen. Ich möchte wissen, wie ich dies für Schleife in einfachen Weg zu machen:Wie man eine Schleife für Knöpfe auf einfache Weise macht?

for(int i=1; i<10; i++){ 
    Button bt1 = new Button();  
    bt1.setText("1");  
    bt1.setOnAction(new EventHandler<ActionEvent>() { 
     @Override 
     public void handle(ActionEvent event) { 
      System.out.println("1"); 
     } 
    }); 
    i 1; 
} 

und wie diese Tasten in VBox bekommen.

+2

Sie haben bereits eine for-Schleife, in der Sie Schaltflächen erstellen. Es sieht ziemlich einfach für mich aus. Ich bin also nicht sicher, worum du hier bittest, weil (a) du bereits deine Antwort zu haben scheinst und (b) es keinen leichteren Weg gibt, es zu erreichen. Vielleicht ist das, was Sie wirklich fragen, der letzte Teil Ihrer Frage, "wie man diese Knöpfe in VBox bekommt", das heißt "VBox vbox = new VBox();' vor die Schleife schreiben und 'vbox.getChildren(). Addieren (bt1) 'innerhalb der Schleife. – jewelsea

+0

Danke, ich denke, worum ich gebeten habe. Aber wenn ich versuche zu laufen, braucht es viel Zeit, ich weiß nicht warum. –

+1

Es sollte praktisch sofort sein, also weiß ich nicht, was Ihr Leistungsproblem ist. Wenn Sie bei der Fehlerbehebung von Leistungsproblemen Hilfe benötigen, müssen Sie einen [mcve] (http://stackoverflow.com/help/mcve) angeben, damit jemand Ihre gesamte (minimale) Anwendung kopieren und einfügen kann, um das Problem zu replizieren. – jewelsea

Antwort

0

Ich weiß nicht, warum es viel Zeit braucht, um das zu tun aber als Juwelen sagte, es sollte sehr schnell dabei sein, ich arbeite mit javafx seit 9 Monaten bei der Arbeit auf einem Computer, der nicht ist sehr performant und, wie ich es in dem Rechner verstehen Sie 10 Tasten für Zahlen von 0 bis 9 haben würden, würde ich es wie folgt Code:

VBox vboxForButtons = new VBox(); 
for(int i=0; i<10; i++){ 
    Button btnNumber = new Button(); 
    btnNumber.setText(String.valueOf(i)); 
    btnNumber.setOnAction((ActionEvent)->{ 
     System.out.println(btnNumber.getText()); 
    }); 
    vboxForButtons.getChildren().add(btnNumber); 
} 

in Alternative dazu für kleine und leichte Anwendungen i weist Sie darauf hin, das SceneBuilder-Tool zu verwenden, das die Objekte, die Sie im Fenster ziehen, direkt mit einem FXML-Ereignis im Code verknüpft.

Ich hoffe, diese Antwort wird Ihnen helfen.

+0

Vielen Dank, ich möchte Sie über jede gute Quelle fragen, die ich SceneBuilder daraus lernen kann. –

0

Sie können es mit dem folgenden Code erreichen.

 VBox vbox = new VBox(); //create new VBox instance 
     vbox.setMinWidth(500); //set minimum width, dont think you'd need this. 

     for(int i=1; i<10; i++){ 
      Button btn = new Button(); 
      btn.setMinWidth(200); 
      btn.setMinHeight(50); 
      btn.setText("Button" + i);  
      btn.setOnAction(new EventHandler<ActionEvent>() { 
       @Override 
       public void handle(ActionEvent event) { 
        System.out.println(btn.getText()); //Or "1" as in your code 
       } 
      }); 
      vbox.getChildren().add(btn); //add button to your VBox 
     } 

     root.getChildren().add(vbox); //root of your pane 
     primaryStage.setScene(scene); //primaryStage is your stage, scene is the current scene 
     primaryStage.show(); 

bearbeiten

die Kommentare in Ihrer Frage über die Leistung beim Lesen, wird dies nicht irgendetwas davon beheben. Ich habe im Grunde den gleichen Code geschrieben, den Sie oben verwendet haben, und hinzugefügt VBox-Erstellung und Button hinzufügen, weil aus der Frage klang, als ob Sie Hilfe beim Erstellen von VBox und Hinzufügen von Schaltflächen benötigt.

Verwandte Themen