我有一个jtextfield,我可以添加一个元素,点击一个按钮,我想将它添加到jlist, 现在我遇到的问题是,通过点击按钮,它将添加我想要的元素但是当我向列表中添加另一个元素时,旧的元素消失了,并且新的元素出现在它的位置。 这是我的代码:
private void addActionPerformed(java.awt.event.ActionEvent evt) {
DefaultListModel model1= new DefaultListModel();
model1.addElement(desc.getText());
jList2.setModel(model1);
jList2.setSelectedIndex(0);
desc.setText("");
}
任何人都可以帮助我吗? 谢谢
答案 0 :(得分:2)
每次单击该按钮,您将创建一个新的DefaultListModel并将该元素添加到此全新列表中。因此,您无法将它们全部添加到同一列表中。
而是在addActionPerformed
方法之外定义DefaultListModel model1,并使用对象内部对象的引用,如下所示:
DefaultListModel model1= new DefaultListModel();
private void addActionPerformed(java.awt.event.ActionEvent evt) {
model1.addElement(desc.getText());
jList2.setModel(model1);
jList2.setSelectedIndex(0);
desc.setText("");
}
答案 1 :(得分:1)
每次点击JList
时,您都会替换JButton
模型。相反,您可以在启动时在类级别使用单个DefaultListModel
并添加到该级别。
答案 2 :(得分:0)
// Only once (may be in constructor),
// don't put this code in ActionListener method actionPerformed().
DefaultListModel model1 = new DefaultListModel();
原样的剩余代码。
答案 3 :(得分:0)
listModel = new DefaultListModel();
listModel.addElement("Jane Doe");
listModel.addElement("John Smith");
listModel.addElement("Kathy Green");
list = new JList(listModel);
public void actionPerformed(ActionEvent e) {
int index = list.getSelectedIndex();
listModel.remove(index);
int size = listModel.getSize();
if (size == 0) { //Nobody's left, disable firing.
fireButton.setEnabled(false);
} else { //Select an index.
if (index == listModel.getSize()) {
//removed item in last position
index--;
}
list.setSelectedIndex(index);
list.ensureIndexIsVisible(index);
}
}