0

我正在研究解决数独难题的 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 没有名称,因此无法访问它们并且无法从中读取信息。关于我将如何解决这个问题的任何想法?

4

0 回答 0