Java 如何允许用户在JList中连续输入元素
我希望能够允许用户不断向JList添加元素。该程序允许用户在文本字段中输入一个元素,当用户按下JButton时,它会将其添加到列表中。我可以这样做,但我的程序只允许我重写以前的元素,而不允许添加新元素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
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();
}
}