Как изменить выбранный индекс в JComboBox при обновлении панели? - PullRequest
0 голосов
/ 19 июня 2020

Я делаю простую судоку и когда хочу начать новую игру, перезагружаю панель. Я сначала удаляю его, а затем добавляю в рамку. Проблема в том, что я могу выбрать сложность для новой игры, но она всегда выбирает первую сложность «Легкая», а не выбирается. Поэтому, если я изменю его в JComboBox на «средний», при перезагрузке страницы игра загрузится с «Легким», а не «средним». Что мне делать, чтобы моя обновленная панель приняла измененную сложность?

Вот методы, которые используются для этого в моей программе:

JComboBox difficulty = new JComboBox();
DefaultComboBoxModel difficultyModel = new DefaultComboBoxModel();
difficultyModel.addElement("Easy");
difficultyModel.addElement("Medium");
difficultyModel.addElement("Hard");
difficulty.setModel(tezavnostModel);
difficulty.setSelectedIndex(0); 
difficulty.setPreferredSize(new Dimension(100, 25));

newGame.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            mainFrame.reloadSudokuBoard();
            sudokuBoard.pickDifficulty(getDifficulty()));
        }
    });

public String getDifficulty() {
    return (String)difficulty.getSelectedItem();
}

public void board(int[][] numbers, int zeros) {
    int numberZeros = setDifficulty(sudokuForm.getDifficulty());
    int[][] boardNumbers = gameNumbers();

public void reloadSudokuBoard() {
    String newDifficulty = (sudokuForm.getDifficulty());
    remove(sudokuBoard);
    sudokuBoard.board(sudokuBoard.gameNumbers(), sudokuBoard.setDifficulty(newDifficulty ));
    add(sudokuBoard, BorderLayout.WEST);
    SwingUtilities.updateComponentTreeUI(sudokuBoard);
}

1 Ответ

0 голосов
/ 19 июня 2020

Надеюсь, это поможет.

    public void reloadSudokuBoard() {
    int index = difficulty.getSelectedIndex();
    String newDifficulty = (sudokuForm.getDifficulty());
    remove(sudokuBoard);
    sudokuBoard.board(sudokuBoard.gameNumbers(), sudokuBoard.setDifficulty(newDifficulty ));
    add(sudokuBoard, BorderLayout.WEST);
    SwingUtilities.updateComponentTreeUI(sudokuBoard);
    difficulty.setSelectedIndex(index);
}

Перед удалением компонентов вы можете использовать getSelectedIndex, чтобы получить выбранный индекс. После добавления элемента setSelectedIndex исправит его

...