好吧,我知道这一定是我想做的非常简单的事情,但我正在费尽心思试图弄清楚。我有一个 GUI,其中包含三个文本框和一个我试图添加到列表中的 JList
。下面是我的 addButton
代码:
private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {
String emailText = custEmailTextBox.getText();
String firstText = firstNameTextBox.getText();
String lastText = lastNameTextBox.getText();
DefaultListModel<String> model = new DefaultListModel<>();
model.addElement(firstText + " : " + lastText + " : " + emailText);
custList.setModel(model);
}
我可以将文本添加到列表中,但如果我尝试添加第二行文本,它只会覆盖第一行。如何只添加到列表而不覆盖其他列表?
最佳答案
I can add text to my jlist box but if I try to add a second line of text it just overwrites the first one.
因为,每次向 JList
添加文本时,您都会创建新的 DefaultListModel
并将该模型设置为 JList
,从而删除已在 JList
中添加文本。为了解决这个问题,在 addButtonActionPerformed
方法之外创建一次 DefaultListModel
对象。同时为 JList
设置一次模型。你的代码应该是这样的:
DefaultListModel<String> model = new DefaultListModel<>();
private void someMethod() //call this method in your constructor or method where you have initialized your GUI
{
custList.setModel(model);
}
private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {
String emailText = custEmailTextBox.getText();
String firstText = firstNameTextBox.getText();
String lastText = lastNameTextBox.getText();
model.addElement(firstText + " : " + lastText + " : " + emailText);
}
关于java - 使用文本框作为 JList 的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17137488/