繁体   English   中英

Java Sudoku GUI板

[英]Java Sudoku GUI board

我正在制作一个Sudoku板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数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM