2010-10-18 189 views

回答

2

看看这个例子,看起来做你想做的。

http://www.java2s.com/Code/Java/Swing-JFC/CustomComboBoxwithImage.htm

你要找的是JComboBox时自定义呈现。渲染器只是一个JComponent,所以如果你可以创建一个组件(包含必要项目的JPanel),那么你可以创建几乎所有你能想到的结果)。如果使用标准JComponents对于您来说不够,您甚至可以重写paint方法。

+1

为的JComboBox的默认渲染器支持图标。 – camickr 2010-10-18 23:24:58

9

只是一个图标添加到模型而不是一个字符串:

import java.awt.*; 
import javax.swing.*; 

public class ComboBoxIcon extends JFrame 
{ 
    JComboBox comboBox; 

    public ComboBoxIcon() 
    { 
     Object[] items = 
     { 
      new ImageIcon("about16.gif"), 
      new ImageIcon("add16.gif"), 
      new ImageIcon("copy16.gif") 
     }; 
     comboBox = new JComboBox(items); 
     getContentPane().add(comboBox, BorderLayout.NORTH); 
    } 

    public static void main(String[] args) 
    { 
     JFrame frame = new ComboBoxIcon(); 
     frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 
} 
+0

我有一个BufferedImage()的数组,我可以用它来代替items []吗? – user2277550 2015-12-20 20:08:29

+0

@ user2277550使用BufferedImage创建ImageIcons。组合框有一个默认的图标渲染器,而不是图像。 – camickr 2015-12-21 00:30:23