import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ImageComboBox extends JComboBox {
private String[] str;
private ImageIcon[] icon;
public ImageComboBox(String[] str,ImageIcon[] icon) {
this.str = str;
this.icon = icon;
ItemObject[] obj = new ItemObject[this.str.length];
for (int i=0; i<str.length; i++) {
obj[i] = new ItemObject(this.str[i],this.icon[i]);
}
JComboBox jcb = new JComboBox(obj);
jcb.setRenderer(new ACellRenderer());
jcb.setMaximumRowCount(3);
}
public static void main(String[] args) {
String[] s = {"西瓜","苹果","草莓","香蕉","葡萄"};
ImageIcon[] icons= new ImageIcon[5];
for(int i=0; i < 5; i++)
{
icons[i] = new ImageIcon(i+".gif");
}
JFrame jf = new JFrame("test");
ImageComboBox icombo = new ImageComboBox(s,icons);
jf.add(icombo);
jf.pack();
jf.setSize(400,300);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
} }class ItemObject {
public String name;
public ImageIcon icon;
public ItemObject(String name,ImageIcon icon) {
this.name = name;
this.icon = icon;
}
}class ACellRenderer extends JLabel implements ListCellRenderer
{
ACellRenderer() {
setOpaque(true);
}
public Component getListCellRendererComponent(JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus)
{
if (value != null) {
setText(((ItemObject)value).name);
setIcon(((ItemObject)value).icon);
} if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
}
else {
setBackground(list.getBackground());
setForeground(list.getForeground());
} return this;
}
}
上面的代码是我按照http://edu.gamfe.com/tutor/d/8114.html改来的
去掉: JComboBox jcb = new JComboBox(obj);
this.setRenderer(new ACellRenderer());
this.setMaximumRowCount(3);
import java.awt.event.*;
import javax.swing.*;
public class JImageComboBox extends JComboBox {
public JImageComboBox(ItemObject[] obj) {
super(obj);
setRenderer(new ACellRenderer());
//setMaximumRowCount();
}
}class ItemObject {
public String name;
public ImageIcon icon;
public ItemObject(String name,ImageIcon icon) {
this.name = name;
this.icon = icon;
}
}class ACellRenderer extends JLabel implements ListCellRenderer
{
ACellRenderer() {
setOpaque(true);
}
public Component getListCellRendererComponent(JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus)
{
if (value != null) {
setText(((ItemObject)value).name);
setIcon(((ItemObject)value).icon);
} if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
}
else {
setBackground(list.getBackground());
setForeground(list.getForeground());
} return this;
}
}