如何在不返回InvocationTargetException的程序的情况下将节点添加到GridPane?

时间:2019-02-11 21:25:02

标签: java javafx

我正在编写一个用于下棋的小型GUI程序。我偶然发现了一个问题,即如果程序不返回 InvocationTargetExcepetion ,就无法向 chessTable 添加任何元素。这是我的代码:

public void start(Stage primaryStage) throws Exception {
    GridPane chessTable = new GridPane();
    chessTable.getStylesheets().add(getClass().getResource("styles.css").toString());
    Box chessBox = new Box(112 , 94, 0);
    chessBox.getStyleClass().add("chess-box");
    for (int h = 0; h < 8; h++) {
        for (int w = 0; w < 8; w++) {
            GridPane.setConstraints(chessBox, w, h);
            chessTable.getChildren().add(chessBox);

        }
    }
    primaryStage.setTitle("ChessGame");
    primaryStage.setFullScreen(true);
    Scene scene = new Scene(chessTable, 900, 750);
    primaryStage.setScene(scene);
    primaryStage.show();
}

1 个答案:

答案 0 :(得分:0)

尝试以下方法(例如,我不知道您的“ styles.css”在哪里...):

    public void start(Stage primaryStage) throws Exception {
        GridPane chessTable = new GridPane();
        chessTable.getStylesheets().add(getClass().getResource("/styles.css").toString());
        for (int h = 0; h < 8; h++) {
            for (int w = 0; w < 8; w++) {
                Box chessBox = new Box(112, 94, 0);
                chessBox.getStyleClass().add("chess-box");
                GridPane.setConstraints(chessBox, w, h);
                chessTable.getChildren().add(chessBox);

            }
        }

请注意,它会为代码对面的每个单元格创建一个新的Box,尝试将同一框同时放置在不同的单元格中(只能添加一次)。