所以我有两个列表,一个已经填充,第二个是空的。按下时,一个按钮从第一个列表中获取所选项目(我知道由于 print 语句而有效),然后将第二个列表添加到其中,但它似乎不起作用,将不胜感激任何帮助。
flightsList = new javax.swing.JList();
flightsList.setModel(
new javax.swing.DefaultListModel() {
String[] strings = { "121", "105", "109"};
public int getSize() { return strings.length; }
public Object getElementAt(int i) { return strings[i]; }
});
jScrollPane1.setViewportView(flightsList);
qList = new javax.swing.JList();
qList.setModel(
new javax.swing.DefaultListModel() {
String[] strings = { };
public int getSize() { return strings.length; }
public Object getElementAt(int i) { return strings[i]; }
});
jScrollPane2.setViewportView(qList);
private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {
int selectedItemIndex = flightsList.getSelectedIndex();
String selectedFlight = (String) flightsList.getModel().getElementAt(selectedItemIndex);
DefaultListModel model = (DefaultListModel) qList.getModel();
System.out.println(selectedFlight);
model.addElement(selectedFlight);
qList.setModel(model);
}
虽然这不是关于约定的讨论,但使用 import 会使您的代码更易于阅读。但是,您可以使用列表模型直接更新 JList。对 ListModel 的任何更新也会影响 JList。
JList flightsList = new JList();
listmodel1 = new DefaultListModel();
flightsList.setModel(listmodel1);
String[] strings = { "121", "105", "109"};
JScrollPane1.setViewportView(flightsList);
qList = new JList();
listmodel2 = new DefaultListModel();
qList.setModel(listmodel2);
String[] strings2 = new String[3];
JScrollPane2.setViewportView(qList);
private void addButtonActionPerformed(ActionEvent evt) {
String selectedFlight = (String) listmodel1.getElementAt(flightsList.getSelectedIndex());
listmodel2.addElement(selectedFlight);
System.out.println(selectedFlight);
}
public int getSize(String[] str) {
return str.length;
}
public String getElementAt(String[] str, int i) {
return str[i];
}