JComboBox里怎么加一个JSeperator呀,大虾帮忙....就好比菜单里面的分隔线...

解决方案 »

  1.   

    有必要吗?~`那你还不如用PopMenu呢~
      

  2.   

    按我目前对源代码的了解,这个会有些难度JComboBox是由几个部分组合而成的[ComboBoxEditor][ArrowButton]
    [---------------------------]
    [      JList item1          ]
    [      JList item2          ]
    [                           ]
    [---------------------------]
    下拉列表其实是一个JList来的,上面好像没有提供分隔栏的方法,而且这个下拉列表外部不可以访问,修改。
    解决:
    1.加入一些“--------”这样的item作为分隔
    2.用JPopupMenu 代替下载列表框个人建议用第二个,我就是觉得JComboBox又丑又陋,极为讨厌。
    你细看windows或者eclipse,ps这些软件,发现它们的下拉列表框像是直接用PopupMenu的
      

  3.   

    楼上说对了一点,下拉表是一个JList,用橡皮图章以绘制 JList 中单元格的组件就行。贴上代码:package gmdbv2;
    import java.awt.Component;
    import javax.swing.DefaultComboBoxModel;
    import javax.swing.DefaultListCellRenderer;
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JSeparator;public class test extends JFrame
    {JComboBox choose;
     DefaultComboBoxModel model; test(){
    model=new DefaultComboBoxModel(new String[]{"First"," ","Second","Third","Forth"});
    choose=new JComboBox();
    choose.setModel(model);
    choose.setRenderer(new DefaultListCellRenderer(){
    public Component getListCellRendererComponent(
             JList list,
             Object value,
             int index,
             boolean isSelected,
             boolean cellHasFocus)
         {Component result=super.getListCellRendererComponent(list,value,index,isSelected,cellHasFocus);
            if(value.toString().equals(" ")){
             System.out.println("已经顺利进入IF块里");
             return new JSeparator();
            }
           return result;
         } });
    this.getContentPane().add(choose);
    this.setVisible(true);
    this.setLocation(300,300);
    pack();

     }
    public static void main(String args[])
    {
      new test();
    }
    }
    已经测试过,没问题,按照此方法还可以往JLIST里添加JButon,JLabel...等等Component
      

  4.   

    顶楼上~
    我也想到这个招,被你给抢先了。
    btw,建议使用"-"替换" ",与菜单一致,这样二次开发也方便,^_^
      

  5.   

    if(value.toString().equals(" ")){
            System.out.println("已经顺利进入IF块里");
            return new JSeparator();
            }这个办法不错,呵呵...顶一下
    但存在的问题是通过ComboBox.getSeletectedItem 会不会选择到分隔栏了?这样就会引起很多问题,也不好使用
      

  6.   

    感谢ganhaitian() ,可你的还是存在问题..可以被选中,这个使我不想要的...
    还能improve 么??谢谢你哈