gpt4 book ai didi

Java 数独 GUI 板

转载 作者:太空宇宙 更新时间:2023-11-04 07:22:41 27 4
gpt4 key购买 nike

我正在制作一个数独板 GUI,它应该看起来像这样 http://www.sudoku.4thewww.com/Grids/grid.jpg

由于某种原因,它只显示最后一个 3*3 板。如果有人能告诉我我做错了什么,我将不胜感激,谢谢。

import java.awt.*;
import java.util.Random;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class gui2 extends JFrame{

private JTextField f[][]= new JTextField[9][9] ;
private JPanel p[][]= new JPanel [3][3];

public gui2(){
super("Sudoku");
setLayout(new GridLayout());

for(int x=0; x<=8; x++){
for(int y=0; y<=8; y++){
f[x][y]=new JTextField(1);
}
}

for(int x=0; x<=2; x++){
for(int y=0; y<=2; y++){
p[x][y]=new JPanel(new GridLayout(3,3));
}
}
setLayout(new GridLayout(3,3,5,5));

for(int u=0; u<=2; u++){
for(int i=0; i<=2; i++){
for(int x=0; x<=2; x++ ){
for(int y=0; y<=2; y++){
p[u][i].add(f[y][x]);
}
}
add(p[u][i]);
}
}



}

}

最佳答案

这段代码应该可以工作:

public class Gui2 extends JFrame{

/**
*
*/
private static final long serialVersionUID = 0;
private JTextField f[][]= new JTextField[9][9] ;
private JPanel p[][]= new JPanel [3][3];

public Gui2(){
super("Sudoku");

for(int x=0; x<=8; x++){
for(int y=0; y<=8; y++){
f[x][y]=new JTextField(1);
}
}

for(int x=0; x<=2; x++){
for(int y=0; y<=2; y++){
p[x][y]=new JPanel(new GridLayout(3,3));
}
}

setLayout(new GridLayout(3,3,5,5));

for(int u=0; u<=2; u++){
for(int i=0; i<=2; i++){
for(int x=0; x<=2; x++ ){
for(int y=0; y<=2; y++){
p[u][i].add(f[y+u*3][x+i*3]);
}
}
add(p[u][i]);
}
}
}
}

问题出在这一行:p[u][i].add(f[y][x]);。您一遍又一遍地向每个面板添加相同的 9 个文本字段,但添加多次的 Component 会从之前的容器中删除。此行 p[u][i].add(f[y+3*u][x+3*i]); 考虑了当前面板位置,并使用整个 JTextField 数组。

关于Java 数独 GUI 板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19072690/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com