数独パズルを解く Java コードに取り組んでいます。ロジックはまだ実装されていませんが、ループを使用して JComboBox を作成する際に問題が発生しました。私のコードはエラーなしでコンパイルおよび実行されますが、右下の 3x3 ペインのみが JLabels に変換されます。この問題は、以下のループが原因であると考えています。
for (int boxRow = 0; boxRow<3; boxRow++){
for(int boxCol = 0; boxCol<3; boxCol++){
boxes[boxRow][boxCol] = new JPanel();
boxes[boxRow][boxCol].setLayout(new GridBagLayout());
for (int row = 0; row < 3; row++){
for(int col = 0; col < 3; col++){
comboBox[row][col] = new JComboBox(sudokuChoose);
constraints.weightx = 1;
constraints.weighty = 1;
constraints.gridx = col;
constraints.gridy = row;
boxes[boxRow][boxCol].add(comboBox[row][col], constraints);
}
}
constraints.weightx = 1;
constraints.weighty = 1;
constraints.gridx = boxRow;
constraints.gridy = boxCol;
add(boxes[boxRow][boxCol], constraints);
boxes[boxRow][boxCol].setVisible(true);
}
}
for(int boxRow = 0; boxRow<3; boxRow++){
for(int boxCol = 0; boxCol<3; boxCol++){
labelBoxes[boxRow][boxCol] = new JPanel();
labelBoxes[boxRow][boxCol].setLayout(new GridBagLayout());
for(int row = 0; row < 3; row++){
for(int col = 0; col < 3; col++){
tempComboText = (String)comboBox[row][col].getSelectedItem();
label[row][col] = new JLabel();
//System.out.println(comboBox[row][col]);
//System.out.println((String)comboBox[row][col].getSelectedItem());
label[row][col].setText(tempComboText);
constraints.weightx = 1;
constraints.weighty = 1;
constraints.gridx = col;
constraints.gridy = row;
add(label[row][col], constraints);
label[row][col].setVisible(true);
}
}
}
}
1 つ目は、JPanel にある 9 つの JComboBox を作成します。9 つの JPanel があり、合計 81 の JComboBox が作成されます。ただし、ボックスが作成されているとき、各 JPanel 内の対応する各 JComboBox の名前は同じです。したがって、最初の 8 つの JPanel には、JComboBox に関連付けられた名前はありません。2 番目では、1 番目と同じループ構造を使用して JComboBox を変換しますが、最初の 8 つの JPanel の JComboBox には名前がないため、到達できず、そこから情報を読み取ることができません。これを回避する方法について何か考えはありますか?