我正在研究解决数独难题的 Java 代码。该逻辑尚未实现,但我遇到了使用循环创建 JComboBoxes 的问题。我的代码编译并运行没有错误,但是它只将右下角的 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);
}
}
}
}
第一个创建 9 个 JComboBoxes,它们位于 JPanel 中。有 9 个 JPanel,总共创建了 81 个 JComboBox。但是,在创建框时,每个 JPanel 中每个对应的 JComboBox 的名称都是相同的。因此,前 8 个 JPanel 中没有与 JComboBoxes 关联的名称。在第二个中,我使用第一个中使用的相同循环结构转换 JComboBoxes,但由于前 8 个 JPanel 中的 JComboBoxes 没有名称,因此无法访问它们并且无法从中读取信息。关于我将如何解决这个问题的任何想法?