如何在没有eventlistener的情况下以编程方式添加元素



我想在用户定义的函数中添加jlist中的元素,而不是任何事件侦听器。

我有jlist as:

DefaultListModel listModel = new DefaultListModel();
JList jList1 = new JList(listModel);
listModel.add(0,"Welcome");
listModel.addListDataListener(new MyListDataListener());
class MyListDataListener implements ListDataListener {
        public void contentsChanged(ListDataEvent e) {
             //DefaultListModel model = (DefaultListModel)e.getSource();
            //jList1.setModel(listModel);
            System.out.println("inside content");
        }
        public void intervalAdded(ListDataEvent e) {
           // jList1.setModel(listModel);
            jList1.setListData(a);
            //System.out.println("inside added"+e.getSource()+" "+jList1.getModel());
        }
        public void intervalRemoved(ListDataEvent e) {
        }
    }

as,每当我想添加鼠标侦听器中的元素时,都会调用Intervalded,为

private void sendButtonMouseClicked(java.awt.event.MouseEvent evt) {                                        
        // TODO add your handling code here:
        if(!inputField.getText().isEmpty())
        {
            message=myName+" : "+inputField.getText();

        listModel.add(GlobalVariable.i,message);

        inputField.setText(null);
        GlobalVariable.i++;
        }
    }

以及我的用户定义功能,即

public void messagereceived(String s)
    {
                 listModel.add(GlobalVariable.i,message);
                 GlobalVariable.i++;
}

但是,每当从messageReceived()函数调用时, listModel.setmodel()不起作用。

如何在此功能中添加jlist中的元素?

  1. messagereceived中,您不是在调用listModel.setmodel(),而是在调用listModel.add(GlobalVariable.i,message);
  2. 当您调用jList1.setListData(a);时,您将隐式创建并在jList1上设置新的ListModel。因此,当您修改listModel时,它不会反思您的jList1
  3. GlobalVariable->看起来像是一些古老的C代码风格的标志。改为使用对象。

相关内容

  • 没有找到相关文章

最新更新