Java 需要帮助在JFrame中排列JTextFields吗

Java 需要帮助在JFrame中排列JTextFields吗,java,swing,jframe,jtextfield,Java,Swing,Jframe,Jtextfield,我正在用java制作一个数独程序来学习一些算法,所以我希望用户能够输入一个未解决的数独难题。到目前为止,我已经创建了81个(9x9)盒子: JTextField输入[]=新的JTextField[80]; 对于(int i=0;i使用JPanelwith 此外: JTextField input[] = new JTextField[80]; 这是80个(不是81个)文本字段 更新:(示例代码) 公共类SodokuBoardDemo{ 公共静态void main(字符串…参数){ Sudoku

我正在用java制作一个数独程序来学习一些算法,所以我希望用户能够输入一个未解决的数独难题。到目前为止,我已经创建了81个(9x9)盒子:

JTextField输入[]=新的JTextField[80];

对于(int i=0;i使用
JPanel
with

此外:

JTextField input[] = new JTextField[80];
这是80个(不是81个)文本字段

更新:(示例代码)

公共类SodokuBoardDemo{
公共静态void main(字符串…参数){
SudokuBoard=新的SudokuBoard();
JFrame=新JFrame(“Sodoku”);
框架。添加(板);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
公共静态类SudokuBoard扩展了JPanel{
公共SudokuBoard(){
setboorder(BorderFactory.createLineBorder(Color.GRAY));
setLayout(新的GridLayout(3,3));
BoardPart输入[]=新的BoardPart[9];
对于(int i=0;i<9;i++){
输入[i]=新的BoardPart();
添加(输入[i]);
}
}
公共静态类BoardPart扩展了JPanel{
公共董事会第(部分){
setboorder(BorderFactory.createLineBorder(Color.GRAY));
setLayout(新的GridLayout(3,3));
JTextField输入[]=新的JTextField[9];
对于(int i=0;i<9;i++){
输入[i]=新的JTextField();
输入[i].setPreferredSize(新维度(30,30));
添加(输入[i]);
}
}
}
}
}

使用
JPanel

此外:

JTextField input[] = new JTextField[80];
这是80个(不是81个)文本字段

更新:(示例代码)

公共类SodokuBoardDemo{
公共静态void main(字符串…参数){
SudokuBoard=新的SudokuBoard();
JFrame=新JFrame(“Sodoku”);
框架。添加(板);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
公共静态类SudokuBoard扩展了JPanel{
公共SudokuBoard(){
setboorder(BorderFactory.createLineBorder(Color.GRAY));
setLayout(新的GridLayout(3,3));
BoardPart输入[]=新的BoardPart[9];
对于(int i=0;i<9;i++){
输入[i]=新的BoardPart();
添加(输入[i]);
}
}
公共静态类BoardPart扩展了JPanel{
公共董事会第(部分){
setboorder(BorderFactory.createLineBorder(Color.GRAY));
setLayout(新的GridLayout(3,3));
JTextField输入[]=新的JTextField[9];
对于(int i=0;i<9;i++){
输入[i]=新的JTextField();
输入[i].setPreferredSize(新维度(30,30));
添加(输入[i]);
}
}
}
}
}

如果您不确定如何使用Oracle文档上的不同
布局
s。如果您想了解组件本身,也可以查看组件上的。:)


ps:可能是我太困了,但您似乎创建了80个文本字段,而不是81个。

如果您不确定如何使用Oracle文档上的不同
布局。如果您想了解组件本身,也可以查看组件上的选项。:)


ps:可能是我太困了,但你似乎已经创建了80个文本字段,而不是81个。

谢谢,效果很好,我只是在循环之前添加了这个:f.setLayout(newgridlayout(9,9));还有一种方法可以将gridlayout细分为9个3x3的框,这样看起来有点痛苦吗?没有。你需要使用多个JPanel。谢谢,效果很好,我只是在循环之前添加了这个:f.setLayout(新的gridlayout(9,9));还有一种方法可以将gridlayout细分为9个3x3的框,这样看起来有点痛苦吗?没有。你需要使用多个JPanel。
public class SodokuBoardDemo {

    public static void main(String... args) {
        SudokuBoard board = new SudokuBoard();    
        JFrame frame = new JFrame("Sodoku");
        frame.add(board);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);            
        frame.setVisible(true);
    }

    public static class SudokuBoard extends JPanel {

        public SudokuBoard() {
            setBorder(BorderFactory.createLineBorder(Color.GRAY));
            setLayout(new GridLayout(3, 3));
            BoardPart input[] = new BoardPart[9];
            for (int i = 0; i < 9; i++) {
                input[i] = new BoardPart();
                add(input[i]);
            }
        }

        public static class BoardPart extends JPanel {

            public BoardPart() {
                setBorder(BorderFactory.createLineBorder(Color.GRAY));
                setLayout(new GridLayout(3, 3));
                JTextField input[] = new JTextField[9];
                for (int i = 0; i < 9; i++) {
                    input[i] = new JTextField();
                    input[i].setPreferredSize(new Dimension(30, 30));
                    add(input[i]);
                }
            }
        }
    }
}