I want to add elements in JList from an user-defined function which is not any event listener.
I have 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, intervalAdded is called whenever I want to add elements from a mouseclicked listener,as
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++;
}
}
and also from my user-defined function,that is
public void messagereceived(String s)
{
listModel.add(GlobalVariable.i,message);
GlobalVariable.i++;
}
But the listModel.setmodel() does not work whenever it called from the messagereceived() function.
How do I add element in JList from this function?
messagereceived, you are not callinglistModel.setmodel()butlistModel.add(GlobalVariable.i,message);jList1.setListData(a);you are implicitly creating and setting a new ListModel onjList1. Therefore, when you modifylistModel, it does not reflect on yourjList1.GlobalVariable–>looks like the sign of some ancient C code-style. Use objects appropriately instead.