java - Unable to get each item from selected multiple line Jlist? -


after doing lots of research still unable items selected multiple line jlist. here code listselectionlistener:

list.addlistselectionlistener(new listselectionlistener() {         public void valuechanged(listselectionevent e) {             listmodel model = list.getmodel();              for(int i=0; < model.getsize(); i++){                 system.out.println( model.getelementat(i));               }         }     }); 

i added button print selected items:

btnnewbutton.addmouselistener(new mouseadapter() {         @override         public void mouseclicked(mouseevent e) {             listmodel model = list.getmodel();              for(int i=0; < model.getsize(); i++){                 system.out.println( model.getelementat(i));               }         }     }); 

but still getting same output :

com.example.main.student@c36b5fb com.example.main.student@2e61eb2 com.example.main.student@151f708e com.example.main.student@563e55b0 

i expecting output "name: paul0 age: 0." tried adding defaultlistmodel instead of listmodel output same. please want each item inside selected line.i using jdk8. below complete working code.

    import java.awt.component;      import javax.swing.defaultlistcellrenderer;     import javax.swing.defaultlistmodel;     import javax.swing.jframe;     import javax.swing.jlist;     import javax.swing.listmodel;     import javax.swing.swingutilities;     import javax.swing.jbutton;      import java.awt.borderlayout;      import javax.swing.event.listselectionlistener;     import javax.swing.event.listselectionevent;     import java.awt.event.mouseadapter;     import java.awt.event.mouseevent;   public class test3 {    jlist<student> list; defaultlistmodel model;  public test3() {     list = new jlist();     list.addlistselectionlistener(new listselectionlistener() {         public void valuechanged(listselectionevent e) {             listmodel model = list.getmodel();              for(int i=0; < model.getsize(); i++){                 system.out.println( model.getelementat(i));               }         }     });     model = new defaultlistmodel();     (int = 0; < 10; i++) {         model.addelement(new student("paul" + i, i));     }     list.setmodel(model);     list.setcellrenderer(new mylistcellrenderer());      jframe frame = new jframe("test");     frame.setdefaultcloseoperation(jframe.exit_on_close);     frame.getcontentpane().add(list);      jbutton btnnewbutton = new jbutton("print");     btnnewbutton.addmouselistener(new mouseadapter() {         @override         public void mouseclicked(mouseevent e) {             listmodel model = list.getmodel();              for(int i=0; < model.getsize(); i++){                 system.out.println( model.getelementat(i));               }         }     });     frame.getcontentpane().add(btnnewbutton, borderlayout.north);     frame.pack();     frame.setvisible(true); }  public static void main(string[] args) {     swingutilities.invokelater(new runnable() {         public void run() {             new test3();         }     }); }  private class mylistcellrenderer extends defaultlistcellrenderer {      @override     public component getlistcellrenderercomponent(             jlist list, object value, int index,             boolean isselected, boolean cellhasfocus) {         super.getlistcellrenderercomponent(list, value, index, isselected, cellhasfocus);         student label = (student) value;         string name = label.getname();         int age = label.getage();         string labeltext = "<html>name: " + name + "<br/>age: " + age;         settext(labeltext);          return this;     }     } }  class student {     string name;     int age;     public student(string name, int age) {        this.name = name;        this.age = age;     }     public string getname() { return name; }     public int getage() { return age; } } 

getelementat returning object @ specified position, happens student in case. system.out.println using object's tostring method print object, so, based on code, seems working.

but, if want output of "name: paul0 age: 0.", need change student class , override tostring method meet requirements

class student {     string name;     int age;     public student(string name, int age) {        this.name = name;        this.age = age;     }     public string getname() { return name; }     public int getage() { return age; }     public string tostring() {         return "name: " + getname() + " age: " + getage());     } } 

or that

you might want take @ jlist#getselectedvalueslist list of items user has selected (but might misinterrupting question)

you have @ object superclass (look section called "the tostring() method") more details


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -