java - 使用文本框作为 JList 的输入

标签 java swing user-interface jlist

好吧,我知道这一定是我想做的非常简单的事情,但我正在费尽心思试图弄清楚。我有一个 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/

相关文章:

java - 为什么这会不断覆盖?

java - 从不同的 URL 但相同的域在 jsp 中加载图像?

java - 自下而上堆叠/插入 JComponent(类似于 CLI 的作用)

ios - Apple Watch 应用可以多次浏览吗?

android - 为什么我的自定义按钮状态不起作用?

java - 如何在不重启服务器的情况下清除ehcache

java - 使用带注释(标记)类的 AOP AspectJ 静态字段初始化

java - GridLayout 不遵守每列我想要的行数

java - 有这方面的想法

command-line - 关于实现命令行界面的建议