Java 需要帮助在JFrame中排列JTextFields吗
我正在用java制作一个数独程序来学习一些算法,所以我希望用户能够输入一个未解决的数独难题。到目前为止,我已经创建了81个(9x9)盒子: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
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]);
}
}
}
}
}