我想在用户定义的函数中添加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中的元素?
- 在
messagereceived
中,您不是在调用listModel.setmodel()
,而是在调用listModel.add(GlobalVariable.i,message);
- 当您调用
jList1.setListData(a);
时,您将隐式创建并在jList1
上设置新的ListModel。因此,当您修改listModel
时,它不会反思您的jList1
。 -
GlobalVariable
->看起来像是一些古老的C代码风格的标志。改为使用对象。