数独の GUI に取り組んでいます。Droid (SudokuFree) 用の優れたアプリがあり、その機能をコピーして小さな機能を 1 つ追加したいと考えています (進行中のボードを保存し、続行し、必要に応じて元に戻す)。一部のコードは、より SSCCE にするためにコメント アウトされています。質問がある場合は、2 番目の投稿を参照してください。2 つの投稿が非常に役に立ち、以下のコードの多くを借りてきました。
数独ソルバー用の GUI の構築 (ASCII の例で完成)
私の問題は、JButton がスクロールされた後にのみ表示されることです。以前の投稿を検索したところ、既に行った setVisible(true) への参照のみが見つかりました。
ありがとうございました
public class RunSudokuNinja implements Runnable{
@Override
public void run() {
//SudokuEngineInterface sudokuEngine = new SudokuEngine();
SudokuView sudokuView = new SudokuView();
//sudokuView.setSudokuImplementation(sudokuEngine);
sudokuView.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new RunSudokuNinja());
}
}
public class SudokuView extends JFrame{
//SudokuController controller;
//SudokuEngine sudokuEngine;
private static final int width = 500;
private static final int height = 650;
private static final int yMar = 100;
private static final int xMar = 25;
private static final int cellSize = 40;
private static final int gridSpace = 3;
private static final int secSpace = 9;
public JButton[][] btnz = new JButton[9][9];
public SudokuView() {
//controller = new SudokuController();
//sudokuEngine = new SudokuEngine();
setTitle("Sudoku Ninja 0.1");
setSize(width, height);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
setBackground(Color.GRAY);
int y=yMar;
for (int r=0;r<9;r++){
int x=xMar;
for (int c=0;c<9;c++){
btnz[r][c]=new JButton("1");
btnz[r][c].setBounds(x,y,cellSize,cellSize);
btnz[r][c].setVisible(true);
add(btnz[r][c]);
if (c==2||c==5){
x = x+cellSize+secSpace;
}else{
x = x+cellSize+gridSpace;
}
}
if (r==2||r==5){
y = y+cellSize+secSpace;
}else{
y = y+cellSize+gridSpace;
}
}
setVisible(true);
}
@Override
public void paint(Graphics g){
}
public void setSudokuImplementation(SudokuEngineInterface listener) {
//controller.setListener(listener);
}
}