簡體   English   中英

JavaFX-控件數組

[英]JavaFX - Array of Controls

我想創建一個JavaFX控制器數組,以便更輕松地使用它們,例如,您可以在GridPane中循環添加/設置元素。

但是,盡管編譯器/ IDE未顯示任何錯誤,但以下代碼無法正常工作:

public GridPane drawPane(){
    GridPane grid = new GridPane();
    Button[] btn = new Button[10];
    grid.add(btn[0], 0,0);
    return grid;
}

然而,這確實工作

public GridPane drawPane(){
    GridPane grid = new GridPane();
    Button btn = new Button();
    grid.add(btn, 0,0);
    return grid;
}

我安裝控制器錯誤嗎? 為什么此代碼不適用於數組?

您的數組不包含任何對象,因此您將獲得NullPointerException 用初始化的對象填充數組以使其正常工作。

public GridPane drawPane(){
    GridPane grid = new GridPane();
    Button[] btn = new Button[10];
    btn[0] = new Button(); //add this line
    grid.add(btn[0], 0,0);
    return grid;
}

嘗試一下...它將創建一個按鈕數組,如果您調用getGrid()方法,它將遍歷該按鈕數組並將它們添加到GridPane中。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

public class App extends Application {

    private Button[] btns = new Button[10];

    @Override
    public void start(Stage primaryStage) {

        initBtnsArray();
        Group root = new Group();

        root.getChildren().add(getGrid());
        Scene scene = new Scene(root, 800, 600);

        primaryStage.setTitle("Hello Controller-Array-World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

    private Pane getGrid() {
        int i = 0;
        GridPane gridPane = new GridPane();
        for(Button b : btns) {
            // do something with your button
            // maybe add an EventListener or something
            gridPane.add(b, i*(i+(int)b.getWidth()), 0);
            i++;
        }
        return gridPane;
    }

    private void initBtnsArray() {
        for(int i = 0; i < btns.length; i++) {
            btns[i] = new Button("Button-"+i);
        }
    }
}

帕特里克

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM