Как создать несколько Jlists с разными значениями с помощью DefaultListModel
У меня проблема с моим кодом. У меня есть многомерный массив строк [][] и я хочу создать из него списки. Поэтому для каждого элемента array[] я хочу новый список со своими значениями. Так, например, у меня было 4 списка. Список 1 имеет 3 значения, список 2 имеет 1 значение, список 3 имеет 4 значения, а список 4 имеет 2 значения. Это работало нормально, когда я только использовал JList. Там у меня для каждого значения массива все его значения.
protected static JComponent getButtonCluster() {
contentPanel.removeAll();
contentPanel.setLayout(new GridLayout(0,2, 5, 5));
contentPanel.setBorder(new EmptyBorder(10,0,0,0));
for (int i=0; i < StringArray.length; i++) {
listbox = new JList( StringArray[i] );
contentPanel.add(listbox);
}
return contentPanel;
}
Но теперь мне пришлось изменить только JLists на DefaultListModel, потому что я хочу изменить значения, нажав на значения. И теперь ВСЕ списки имеют ВСЕ значения массива. Таким образом, все 4 коробки имеют 10 элементов.
final DefaultListModel<String> model = new DefaultListModel<String>();
for (int i=0; i < StringArray.length; i++) {
for (int j=0; j < StringArray[i].length; j++) {
model.addElement(StringArray[i][j]);
if((StringArray[i].length -1)== j) {
listbox = new JList<String>(model);
contentPanel.add(listbox);
listbox.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
//Value Change part.......
}
}
});
}
}
Как я могу исправить свою проблему, чтобы у каждого списка были свои значения?
1 ответ
Ранее вы создавали new JList
в каждом проходе через ваш цикл. В вашем новом коде вы не создаете new
модель с каждым проходом через цикл, так что вы просто добавляете больше к существующей модели каждый раз.