我在向JList中添加JPanel时,JPanel变得不可编辑了,是为什么啊,怎么解决掉???
我测试的时候,发现JPanel根本就没有办法监听到事件,即响应不了鼠标的点击事件。

解决方案 »

  1.   

    为什么要向jlist里面添加jpanel?如果真需要这么做,就需要重写Renderer,如:
    class MyCellRenderer extends JLabel implements ListCellRenderer {
         final static ImageIcon longIcon = new ImageIcon("long.gif");
         final static ImageIcon shortIcon = new ImageIcon("short.gif");
         public Component getListCellRendererComponent(
           JList list,
           Object value,            // value to display
           int index,               // cell index
           boolean isSelected,      // is the cell selected
           boolean cellHasFocus)    // the list and the cell have the focus
         {
             String s = value.toString();
             setText(s);
             setIcon((s.length() > 10) ? longIcon : shortIcon);
               if (isSelected) {
                 setBackground(list.getSelectionBackground());
                   setForeground(list.getSelectionForeground());
               }
             else {
                   setBackground(list.getBackground());
                   setForeground(list.getForeground());
               }
               setEnabled(list.isEnabled());
               setFont(list.getFont());
             setOpaque(true);
             return this;
         }
     } String[] data = {"one", "two", "three", "four"};
     JList dataList = new JList(data);
     dataList.setCellRenderer(new MyCellRenderer());