Java JList问题

时间:2015-06-27 23:35:08

标签: java swing jlist defaultlistmodel

好的我要做的是允许用户为自己创建一个列表,他们在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);

      } 
    }

1 个答案:

答案 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的模型。