好的我要做的是允许用户为自己创建一个列表,他们在TextField中键入的内容,它的输出将显示在Jlist中,但我的问题是如果我键入另一个单词对于TextField,输出是要么附加还是替换已经存在的另一个单词,它假设要在另一个单词下方保存,那么任何人都可以帮助我吗?
public lala(){
b2 = new JButton("ADD");
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
model.removeAllElements();
list1.setModel(model);
}
});
b3 = new JButton("MOVE");
b3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
model = new DefaultListModel<String>();
model.addElement(field.getText());
list.setModel(model);
field.setText("");
}
});
list = new JList<String>();
list.setFixedCellHeight(10);
list.setFixedCellWidth(10);
list.setVisibleRowCount(10);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
scroll = new JScrollPane(list);
scroll.setPreferredSize(new Dimension(100,100));
field = new JTextField(19);
field.setToolTipText("Input Text Area Here");
field.setFont(new Font("Corier",Font.BOLD,20));
field.setBackground(Color.BLACK);
field.setForeground(Color.RED);
field.setDragEnabled(true);
panel = new JPanel();
panel.setBackground(Color.BLACK);
panel.add(b3);
//panel.add(b2);
panel.add(field);
panel.add(scroll);
add(panel);
}
}
答案 0 :(得分:3)
您的问题是您正在为事件监听器中的每个Action创建一个全新的DefaultListModel
。
当用户按下按钮时,您需要向其声明全局DefaultListModel和addElement()
。
这可能有助于指明您正确的方向:
public class Examples {
private DefaultListModel modelList;
private JList list;
private JButton button;
private JTextField field;
public Examples() {
modelList = new DefaultListModel();
list = new JList(modelList);
button = new JButton("Add To List");
field = new JTextField();
init();
}
private void init() {
button.addActionListener((ActionEvent e) -> {
modelList.addElement(field.getText());
// !! list.setModel(modelList);
field.setText("");
});
}
}
在这里,我们已将DefaultListModel注册为Examples
类中的实例字段。
然后我们使用lambda表达式注册一个新的侦听器,并使用字段的文本更新modelList,并将modelList设置为JList的模型。