首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将GridPane添加到GridPane

将GridPane添加到GridPane
EN

Stack Overflow用户
提问于 2015-11-23 20:29:32
回答 1查看 5.4K关注 0票数 0

我是一个使用JavaFX的初学者,必须为最后一个项目创建一个交互式Sudoku板。我的计划是增加9-3乘3 GridPanes到一个3乘3 GridPane (使漂亮的外观板与概述的框),但似乎不能做到我的。

下面是我的blankBoard()创建方法的摘录。板和框预定义为全局GridPane变量:

代码语言:javascript
运行
复制
for (int row = 0; row < 3; row++) {
        for (int col = 0; col < 3; col++) {
            for (int row1 = 0; row1 < 3; row1++) {
                for (int col1 = 0; col1 < 3; col1++) {
                    text = new TextField("0");
                    box = new GridPane();
                    GridPane.setConstraints(text, col1, row1); 
                    box.getChildren().addAll(text);
                }
            }
            GridPane.setConstraints(box, col, row);
            board.getChildren().addAll(box); 

        }

    }

所有这一切给我的是一个3乘3的GridPane:GridPane

有没有其他方法可以做到这一点,或者仅仅在9乘9 GridPane中的一些列和行之间添加边框?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-23 20:40:04

看起来您正在创建9x9=81“内部”网格窗格,而您应该创建它们的3x3=9。然后你只将每组中的最后一组加到板上。你需要这样的东西

代码语言:javascript
运行
复制
GridPane board = new GridPane();


for (int blockColumn = 0; blockColumn < 3 ; blockColumn++) {
    for (int blockRow = 0; blockRow < 3; blockRow++) {

        GridPane box = new GridPane();
        box.setStyle("-fx-background-color: black, -fx-control-inner-background; -fx-background-insets: 0, 2; -fx-padding: 2;");
        for (int column = 0; column < 3; column++) {
            for (int row = 0 ; row < 3; row++) {
                TextField textField = new TextField("0");
                textField.setStyle("-fx-pref-width: 2em;");
                GridPane.setConstraints(textField, column, row);
                box.getChildren().add(textField);
            }
        }

        GridPane.setConstraints(box, blockColumn, blockRow);
        board.getChildren().add(box);

    }
}

样式设置只是适当地调整文本字段的大小,并在每个“块”(即“内部网格窗格”)周围设置一个黑色边框。

SSCCE:

代码语言:javascript
运行
复制
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

public class SudokuBoard extends Application {

    @Override
    public void start(Stage primaryStage) {

        GridPane board = new GridPane();


        for (int blockColumn = 0; blockColumn < 3 ; blockColumn++) {
            for (int blockRow = 0; blockRow < 3; blockRow++) {

                GridPane box = new GridPane();
                box.setStyle("-fx-background-color: black, -fx-control-inner-background; -fx-background-insets: 0, 2; -fx-padding: 2;");
                for (int column = 0; column < 3; column++) {
                    for (int row = 0 ; row < 3; row++) {
                        TextField textField = new TextField("0");
                        textField.setStyle("-fx-pref-width: 2em;");
                        GridPane.setConstraints(textField, column, row);
                        box.getChildren().add(textField);
                    }
                }

                GridPane.setConstraints(box, blockColumn, blockRow);
                board.getChildren().add(box);

            }
        }

        primaryStage.setScene(new Scene(board));
        primaryStage.show();
    }

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33880094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档