将一组按钮添加到Flow Pane

时间:2016-10-24 22:25:01

标签: arrays javafx

我需要在流动窗格中添加一个包含20个按钮的数组。我已经创建了阵列,但似乎无法显示所有按钮。为什么只添加一个按钮?

public class Activity4 extends Application 
{
@Override
public void start(Stage primaryStage) 
{
    Button[] btn = new Button[20];
    for(int i=0; i<btn.length;i++)
    {
        btn[i] = new Button();
        btn[i].setText("Safe!");
        FlowPane root = new FlowPane();
        root.getChildren().addAll(btn[i]);
        Scene scene = new Scene(root, 300, 250);

    primaryStage.setTitle("Button Blast!");
    primaryStage.setScene(scene);
    primaryStage.show();
        btn[i].setOnAction(new EventHandler<ActionEvent>() 
        {
            @Override
            public void handle(ActionEvent event) 
                {
                    System.out.println("Hello World!");
                }
        });     
    }
}

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    launch(args);
}    
}

2 个答案:

答案 0 :(得分:1)

在循环的每次迭代中,您创建一个新的FlowPane,然后创建一个新的Scene并将其设置为舞台。

您需要在循环之前创建一个FlowPane 。在循环中,创建按钮,使用它们注册处理程序,然后将它们添加到流窗格中。

循环之后的,使用流动窗格创建Scene,在舞台中设置它,然后显示舞台。

答案 1 :(得分:0)

import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.layout.*;
import javafx.stage.Stage;
import javafx.scene.control.Button;
public class Activity4 extends Application 
{
    @Override
    public void start(Stage primaryStage) 
    {
        Button [] btn = new Button[20];
        for(int i=0; i<btn.length;i++)
        {
            btn[i] = new Button();
            btn[i].setText("Safe!");

        }
        FlowPane root = new FlowPane();
        root.getChildren().addAll(btn);

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Button Blast!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

enter image description here