点击jcombobox弹出一个颜色选择面板(不是jcolorchooser,自己定义那种),那位大侠指点指点,最好有一点代码,非常感谢。。

解决方案 »

  1.   

    之前我刚做的,把代码发给你,你自己参考下把ColorComboBoxModel m_colormodel=new ColorComboBoxModel();
    MyComboBox colorcombobox=new MyComboBox(m_colormodel);
    colorcombobox.setRenderer(new ColorComboBoxRenderer());
    colorcombobox.setMaximumRowCount(4);
    colorcombobox.addActionListener(listener1);class MyComboBox extends JComboBox {
        
        public MyComboBox(ComboBoxModel model) {
            super(model);
        }
        
        public Object getSelectedColorItem() {
            return ((ColorComboBoxModel)getModel()).getSelectedColorItem();
        }
    }class ColorComboBoxRenderer extends DefaultListCellRenderer {
        
        public ColorComboBoxRenderer() {
            setOpaque(true);
        }
        
        public Component getListCellRendererComponent(
        JList list, Object value, int index, 
        boolean isSelected, boolean cellHasFocus) {
            String strValue = (String)value;
            Object[][] objs = 
                (Object[][])
                    ((ColorComboBoxModel)list.getModel()).getSrcData();
            Color color = Color.BLACK;
            if(strValue != null) {
                for(int i = 0; i < objs.length; i++) {
                    if(objs[i][0].equals(strValue)) {
                        color = (Color)objs[i][1];
                    }
                }
            }
            
            Icon icon = new ColorIcon(color);
            setIcon(icon);
            setText(strValue);
            setBackground(isSelected ? list.getSelectionBackground():
                list.getBackground());
            setForeground(isSelected ? list.getSelectionForeground():
                list.getForeground());
            return this;
            //    super.getListCellRendererComponent(list, value,
            //    index, isSelected, cellHasFocus);
        }
        
        private class ColorIcon implements Icon {
            private Color m_color;
            
            public ColorIcon(Color color) {
                m_color = color;
            }
            
            public int getIconWidth() {
                return 20;
            }
            
            public int getIconHeight() {
                return 10;
            }
            
            public void paintIcon(Component c, Graphics g, 
            int x, int y) {
                int width = getIconWidth();
                int height = getIconHeight();
                g.setColor(m_color);
                g.fillRect(x, y, width, height);
            }
        }
    }
      

  2.   

    能把ColorComboBoxModel的代码贴出来看看吗?非常感谢啊
      

  3.   

    刚才漏掉了
    class ColorComboBoxModel extends DefaultComboBoxModel {
        
        Object[][] m_colorTable;
        
        public ColorComboBoxModel() {
            m_colorTable = new Object[][] {
                {"Black", Color.BLACK},
                {"Blue", Color.BLUE},
                {"Cyan", Color.CYAN},
                {"Dark Gray", Color.DARK_GRAY},
                {"Gray", Color.GRAY},
                {"Green", Color.GREEN},
                {"Light Gray", Color.LIGHT_GRAY},
            };
        }
        
        public Object getSrcData() {
            return m_colorTable;
        }
        
        public int getSize() {
            return m_colorTable.length;
        }
        
        public Object getElementAt(int index) {
            return m_colorTable[index][0];
        }
        
        public Object getElementColorAt(int index) {
            return m_colorTable[index][1];
        }
        
        public Object getSelectedColorItem() {
            Object obj = super.getSelectedItem();
            String str = obj.toString();
            java.util.List list = Arrays.asList(m_colorTable);
            Object[] objs = null;
            for(int i = 0; i < list.size(); i++) {
                objs = (Object[])list.get(i);
                if(objs[0].equals(str))
                    return objs[1];
            }
            
            return null;
        }
    }
      

  4.   

    to  laodabest:hoho,这种效果还不是我想要的啊,我要的是弹出来的类似一个table,比如说是4×4一个table,每一个格子是一个颜色,然后可以每个格子都选择,这种效果怎么实现啊,还得麻烦您指点指点。
      

  5.   

    如果是你上面所说的,我要的是弹出来的类似一个table,那就是要用到JColorChooser,可是你又是要用JCombobox