我正在用java编写一个数独程序来学习一些算法,所以我希望用户能够输入一个未解决的数独难题。这是我到目前为止创建了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。我知道你必须弄乱布局,但我不知道该怎么做。任何帮助都是适当的。
发布于 2012-01-28 08:29:26
对GridLayout使用JPanel。
另外:
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]);
}
}
}
}
}发布于 2012-01-28 08:39:25
如果您不确定如何使用不同的Layout,可以参考a great tutorial on Oracle。如果你想复习一下组件本身,你也可以查看组件上的tutorial。:)
ps:可能是我太困了,但看起来你已经创建了80个文本域,而不是81个。
https://stackoverflow.com/questions/9041852
复制相似问题