如何使用 DefaultListModel 创建多个具有不同值的 Jlist
How to create several Jlists with different values with 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.......
}
}
});
}
}
如何解决我的问题,使每个列表都有自己的值?
之前,您在每次循环中都创建了一个 new JList
。在您的新代码中,您不会在每次通过循环时创建 new
模型,因此您每次都只是向现有模型添加更多内容。
我的代码有问题。 我有一个多维字符串数组 [][] 并想从中创建列表。 因此,对于每个 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.......
}
}
});
}
}
如何解决我的问题,使每个列表都有自己的值?
之前,您在每次循环中都创建了一个 new JList
。在您的新代码中,您不会在每次通过循环时创建 new
模型,因此您每次都只是向现有模型添加更多内容。