我希望能够允许用户不断向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;
}
答案 0 :(得分:0)
您的下一个问题:您始终在DefaultListModel
中重新创建actionPerformed
,但您需要使用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();
}
}