BoxCellRenderer.java -------------------- import javax.swing.*; import java.awt.*; import java.awt.event.*; class BoxCellRenderer extends Box implements ListCellRenderer { JProgressBar progress; JLabel label1,label2,label3; JButton button; public BoxCellRenderer(){ super(BoxLayout.Y_AXIS); label1 = new JLabel("Title"); label2 = new JLabel("Information"); label3 = new JLabel("Misc"); button = new JButton("Click me"); progress = new JProgressBar(); Box hbox1 = Box.createHorizontalBox(); hbox1.add(progress); hbox1.add(button); Box hbox2 = Box.createHorizontalBox(); hbox2.add(label2); hbox2.add(label3); this.add(label1); this.add(hbox1); this.add(hbox2); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { System.out.println("component"); System.out.println((value!=null) ? value.hashCode(): "null"); if(value!=null){ setLabels((String)value,(String)value,(String)value); } return this; } public void setLabels(String s1,String s2, String s3){ this.label1.setText(s1); this.label2.setText(s2); this.label3.setText(s3); } } test.java ------------------ import javax.swing.*; import java.awt.event.*; import java.awt.*; //import java.util.*; // class test { public static void main (String []args){ JFrame myframe; /* Object []segs = new Segment[10]; for(int i=0;i<5;i++){ segs[i] = new Segment(); } */ Object []str = new String[3]; str[0] = "123"; str[1]= "456"; str[2] = "789"; myframe = new JFrame("Test app"); Box mybox = Box.createVerticalBox(); JList mylist = new JList(str); mylist.setCellRenderer(new BoxCellRenderer()); mylist.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { System.out.println("hello"); } }); mybox.add(mylist); myframe.getContentPane().add(mybox); myframe.pack(); myframe.setVisible(true); } }