0

好的,我知道这必须是我想做的非常简单的事情,但我正在拔头发试图弄清楚。我有一个带有三个文本框的 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);   

}

我可以将文本添加到我的列表中,但如果我尝试添加第二行文本,它只会覆盖第一行。我怎样才能在不覆盖另一个的情况下添加到列表中?

4

2 回答 2

2

我可以将文本添加到我的 jlist 框中,但如果我尝试添加第二行文本,它只会覆盖第一行。

因为,每次您向您添加文本时,JList您都会创建新DefaultListModel的并将该模型设置为JList删除已添加的文本JList。为了克服这个问题,在方法DefaultListModel外创建一次对象。同时addButtonActionPerformed设置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);
}
于 2013-06-16T21:21:21.987 回答
1

默认情况下, JList 将使用DefaultListModel

通过list.getModel() 转换JList 模型,然后删除重置列表数据的setModel方法调用。

于 2013-06-16T20:53:37.200 回答