TLDR;:
Я ищу способ перезагрузить JPanels и его компоненты.
Я хотел бы реализовать динамически изменяющийся JComboBox.Вот такая ситуация:
Есть кнопка, которая генерирует данные в фоновом режиме («генерировать контент»), здесь это просто некоторые случайные числа.После того, как данные сгенерированы, эти данные должны быть доступны для выбора внутри JComboBox.
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel();
frame.getContentPane().add(panel, BorderLayout.CENTER);
panel.setLayout(null);
comboBox = new JComboBox<String>();
comboBox.setBounds(39, 63, 144, 20);
panel.add(comboBox);
btnGenerateContent = new JButton("generate content");
btnGenerateContent.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
comboContent = fillrandoms();
comboBox = new JComboBox<>(fillrandoms());
}
});
btnGenerateContent.setBounds(39, 11, 117, 23);
panel.add(btnGenerateContent);
}
private static String[] fillrandoms() {
String[] array = new String[10];
for (int i = 0; i < 10; i++) {
array[i] = "" + Math.random() * 100;
}
return array;
}
Теперь, когда я запускаю программу, она объявляет и запускает комбинированный список, прежде чем появятся данные для отображения.Моя идея заключалась в том, что когда я нажимаю кнопку «Создать контент», это также обновляет пользовательский интерфейс панели или ComboBox.но когда я вставляю panel.updateUI()
или comboBox.updateUI()
, ничего не происходит.
После исследований я нашел несколько способов сделать это с помощью CardLayouts, но я не использую их для своего JComboBox, поэтому мне, вероятно, нужен другой способ.Я даже не знаю, является ли это обычным способом или есть какой-то другой лучший способ.