Я хочу динамически добавлять элементы в мои DefaultListModel
/JList
, но сначала нужно очистить список. Я делаю это, открывая диалоговое окно. Моя проблема в том, что когда я использую model.removeAllElements()
, мое диалоговое окно появляется несколько раз. Что я делаю неправильно?
Я также пытался model.addElementAt(index)
обойти model.removeAllElements()
, но результат тот же.
private javax.swing.JList serviceList;
serviceList.setModel(model);
serviceList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
serviceList.setLayoutOrientation(javax.swing.JList.HORIZONTAL_WRAP);
serviceList.setSelectionBackground(java.awt.Color.white);
serviceList.setVisibleRowCount(3);
serviceList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
serviceListValueChanged(evt);
}
});
private void serviceListValueChanged(javax.swing.event.ListSelectionEvent evt) {
showTasksDialog();
}
showTasksDialog()
: открыть диалоговое окно с 3 кнопками, когда пользователь нажимает первую кнопку, которую он подключает к URL-адресу, затем список обновляется filllst()
.
public void showTasksDialog() {
int selection = serviceList.getSelectedIndex();
Object[] options = {"Analyse", "Build", "Stop"};
int n = taskDialog.showOptionDialog(this,
"What should this Service do?",
"",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
options,
null);
if (n == 0) {
try {
connection.setSlaveToAnalyse(serviceURLJSONArray.getString(selection));
filllist();
} catch (JSONException | IOException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
filllist()
: следует удалить все элементы из моего списка по умолчанию и заполнить его заново, но если я использую model.removeAllElements()
, диалоговые окна появляются снова несколько раз. Когда я не использую removeAllElements
, тогда все в порядке, но список не очищается
public void filllist() throws JSONException, IOException {
model.removeAllElements();
serviceURLJSONArray = connection.getSlaves();
for (int i = 0; i < serviceURLJSONArray.length(); i++) {
String slaveStatus = new Connection().getSlaveStatus(serviceURLJSONArray.getString(i));
model.addElement("Service " +(i+1)+" "+slaveStatus);
}
}