1

イベントリスナーではないユーザー定義関数から JList に要素を追加したいと考えています。

私はJListを次のように持っています:

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) {

        }
    }

として、マウスクリックされたリスナーから要素を追加したいときはいつでも intervalAdded が呼び出されます。

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++;
}

しかし、listModel.setmodel()messagereceived() 関数から呼び出されたときはいつでも機能しません。

この関数から JList に要素を追加するにはどうすればよいですか?

4

1 に答える 1

2
  1. ではmessagereceived、あなたは電話していませんがlistModel.setmodel()listModel.add(GlobalVariable.i,message);
  2. を呼び出すjList1.setListData(a);と、新しい ListModel が暗黙的に作成および設定されjList1ます。したがって、 を変更listModelしても、 には反映されませんjList1
  3. GlobalVariable-->古代の C コード スタイルの記号のように見えます。代わりにオブジェクトを適切に使用してください。
于 2012-10-25T08:02:30.840 に答える