我正在java中制作一个Sudoku程序来学习一些算法,所以我希望用户能够输入一个未解决的数独谜题。这是我到目前为止创建的81(9x9)盒子:
JTextField input[] = new JTextField[80];
for(int i = 0; i <= 79; i++)
{
input[i] = new JTextField();
input[i].setPreferredSize(new Dimension(30,30));
f.getContentPane().add(input[i]);
}
当我运行这个程序时,我得到的只是一个输入字段。我知道所有文本字段并初始化,创建并添加到jframe中。我知道你必须弄乱布局,但我不知道该怎么做。任何帮助都是适当的。
答案 0 :(得分:2)
JPanel
与GridLayout
一起使用。
另外:
JTextField input[] = new JTextField[80];
这是80个(不是81个)文本字段。
更新(示例代码)
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]);
}
}
}
}
}
答案 1 :(得分:1)
如果您不确定如何使用不同的Layout
,那么Oracle文档上会有a great tutorial。如果您想要了解组件本身,您还可以查看它们上的tutorial。 :)
ps:可能是我太困了,但看起来你已经创建了80个文本字段而不是81个。