必须用绘制器,比较复杂,你可以看看<java2 图形设计 卷II swing>,那里面有一些简单的例子!

解决方案 »

  1.   

    给你个例子吧import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class CustomComboBoxDemo extends JPanel 
    {
        ImageIcon images[];    public CustomComboBoxDemo() 
        {
            //Load the pet images
            String[] petStrings = {"Bird", "Cat", "Dog", "Rabbit", "Pig"};
            images = new ImageIcon[petStrings.length];
            for (int i = 0; i < petStrings.length; i++) 
            {
                images[i] = new ImageIcon("images/" + petStrings[i] + ".gif");
                images[i].setDescription(petStrings[i]);
            }        // Create the combo box
            JComboBox petList = new JComboBox(images);
            ComboBoxRenderer renderer= new ComboBoxRenderer();
            renderer.setPreferredSize(new Dimension(200, 130));
            petList.setRenderer(renderer);
            petList.setMaximumRowCount(3);        // Layout the demo
            setLayout(new BorderLayout());
            add(petList, BorderLayout.NORTH);
            setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
        }    public static void main(String s[]) {
            JFrame frame = new JFrame("CustomComboBoxDemo");
            frame.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {System.exit(0);}
            });
     
            frame.getContentPane().add(new CustomComboBoxDemo(),
                                       BorderLayout.CENTER);
            frame.pack();
            frame.setVisible(true);
        }    class ComboBoxRenderer extends JLabel implements ListCellRenderer {
            public ComboBoxRenderer() {
                setOpaque(true);
                setHorizontalAlignment(CENTER);
                setVerticalAlignment(CENTER);
            }        public Component getListCellRendererComponent(
                                               JList list,
                                               Object value,
                                               int index,
                                               boolean isSelected,
                                               boolean cellHasFocus) {
                if (isSelected) {
                    setBackground(list.getSelectionBackground());
                    setForeground(list.getSelectionForeground());
                } else {
                    setBackground(list.getBackground());
                    setForeground(list.getForeground());
                }            ImageIcon icon = (ImageIcon)value;
                setText(icon.getDescription());
                setIcon(icon);
                return this;
            }
        }
    }