import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
class MyCellRenderer extends DefaultListCellRenderer {
     public Component getListCellRendererComponent(JList list,Object value,int index,boolean isSelected,boolean cellHasFocus){     super.getListCellRendererComponent(list,value,index,isSelected,cellHasFocus);
 ListData data=(ListData) value;
          setText(data.forDisplay());   //only disply ListData.s
          return this;
     }
 }//list data 
class ListData{
int hideNum;
String s;
public ListData(int i, String s){
hideNum=i;
this.s=s;
}
public int getHideNum(){ return hideNum;}
public String forDisplay(){ return s;}
}
public class Test extends JFrame{
JList list=new JList();
public Test(){
super("test");
                 ListData[] data = {new ListData(1,"one"), new ListData(2,"two"), 
                                 new ListData(3,"three"), new ListData(4,"four")};
list.setListData(data);
list.setCellRenderer(new MyCellRenderer());
list.addMouseListener(new MouseAdapter() { 
                      public void mouseClicked(MouseEvent e) { 
int index = list.locationToIndex(e.getPoint());
if(index!=-1){ //valid selection
         Object selection=list.getSelectedValue();
int num=((ListData) selection).getHideNum();  //get ListData.hideNum
System.out.println("Hide numbers :"+num);
}
   }
}); getContentPane().add(list);

}
public static void main(String[] args){
Test app=new Test();
app.pack();
app.show();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

解决方案 »

  1.   

    public class JListDataRender extends DefaultListCellRenderer
    { public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
    { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
    JListData data = (JListData) value;
    setText(data.display()); //only disply ListData.s
    return this;
    }}