[英]Java JList problems
好吧,我想做的是允許用戶自己創建一個列表,無論他們在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);
}
}
您的問題是,您正在事件偵聽器中的每個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的模型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.