Java 如何允许用户在JList中连续输入元素

Java 如何允许用户在JList中连续输入元素,java,swing,jbutton,jtextfield,jlist,Java,Swing,Jbutton,Jtextfield,Jlist,我希望能够允许用户不断向JList添加元素。该程序允许用户在文本字段中输入一个元素,当用户按下JButton时,它会将其添加到列表中。我可以这样做,但我的程序只允许我重写以前的元素,而不允许添加新元素 private JList list; private JTextField textField; private JButton followUser() { JButton btnNewButton = new JButton("Follow User"); btnNewBu

我希望能够允许用户不断向JList添加元素。该程序允许用户在文本字段中输入一个元素,当用户按下JButton时,它会将其添加到列表中。我可以这样做,但我的程序只允许我重写以前的元素,而不允许添加新元素

private JList list;
private JTextField textField;

private JButton followUser() {
    JButton btnNewButton = new JButton("Follow User");
    btnNewButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            DefaultListModel DLM = new DefaultListModel();
            String input = textField.getText();
            DLM.addElement(input);
            list.setModel(DLM);
        }
    });
    return btnNewButton;
}

下一步的问题是:您总是在actionPerformed中重新创建DefaultListModel,但您需要使用JList中的模型并向其中添加元素。请尝试下一个示例:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

public class TestFrame extends JFrame {

    private DefaultListModel<String> model;

    public TestFrame() {
        init();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }

    private void init() {
        final JTextField field = new JTextField(10);
        JButton add = new JButton("add");
        add.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                String text = field.getText();
                model.addElement(text);
            }
        });

        JPanel p = new JPanel();
        p.add(field);
        p.add(add);

        JList<String> l = new JList<>(model = new DefaultListModel<>());

        add(new JScrollPane(l));
        add(p,BorderLayout.SOUTH);
    }




    public static void main(String args[]) {
        new TestFrame();
    }

}