下面这段程序有些问题,,不知道怎么才能正确使用。。
import java.awt.Component;
import java.awt.Dimension;import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import javax.swing.SwingUtilities;public class CustomCombox extends JFrame {
JComboBox com;
ImageIcon image;
ComboBoxRenderer cb=new ComboBoxRenderer();
CustomCombox() {
setSize(300,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
com=new JComboBox();
cb.setPreferredSize(new Dimension(100, 30));
//com.setPreferredSize(new Dimension(100, 30));
com.setRenderer(cb);
add(com);
setVisible(true);
} class ComboBoxRenderer extends JLabel implements ListCellRenderer {
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
int selectedIndex = ((Integer)value).intValue();
for(int i=0;i<selectedIndex;i++)
{
image=new ImageIcon("image/face/" + i + ".gif");
setText("i");
setIcon(image);
}
return null;
} }
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new CustomCombox();
}
});
}
}
import java.awt.Component;
import java.awt.Dimension;import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import javax.swing.SwingUtilities;public class CustomCombox extends JFrame {
JComboBox com;
ImageIcon image;
ComboBoxRenderer cb=new ComboBoxRenderer();
CustomCombox() {
setSize(300,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
com=new JComboBox();
cb.setPreferredSize(new Dimension(100, 30));
//com.setPreferredSize(new Dimension(100, 30));
com.setRenderer(cb);
add(com);
setVisible(true);
} class ComboBoxRenderer extends JLabel implements ListCellRenderer {
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
int selectedIndex = ((Integer)value).intValue();
for(int i=0;i<selectedIndex;i++)
{
image=new ImageIcon("image/face/" + i + ".gif");
setText("i");
setIcon(image);
}
return null;
} }
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new CustomCombox();
}
});
}
}
public MyCellRenderer() {
setOpaque(true);
} public Component getListCellRendererComponent(JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) { setText(value.toString()); Color background;
Color foreground; // check if this cell represents the current DnD drop location
JList.DropLocation dropLocation = list.getDropLocation();
if (dropLocation != null
&& !dropLocation.isInsert()
&& dropLocation.getIndex() == index) { background = Color.BLUE;
foreground = Color.WHITE; // check if this cell is selected
} else if (isSelected) {
background = Color.RED;
foreground = Color.WHITE; // unselected, and not the DnD drop location
} else {
background = Color.WHITE;
foreground = Color.BLACK;
}; setBackground(background);
setForeground(foreground); return this;
}
}
jdk提供的例子。
getListCellRendererComponent方法的返回值,
不能用return null; 用return this;
ListCellRenderer是JList、JComboBox的渲染器接口。
public interface ListCellRenderer{
/* 返回一渲染组件显示列表中的某个选项(return this)。参数list是正在渲染的列表,value是列表中当前正在渲染的项,index是当前正在渲染的项的索引,isSelected是当前项是否选中,cellHasFocus是指当前项是否拥有焦点。*/
Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus);
}
import java.awt.Component;
import java.awt.Dimension;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import javax.swing.SwingUtilities;public class CustomCombox extends JFrame {
JComboBox com;
ImageIcon image;
ComboBoxRenderer cb = new ComboBoxRenderer(); CustomCombox() {
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Integer[] intArray = new Integer[3];
for (int i = 0; i < intArray.length; i++) {
intArray[i] = new Integer(i);
}
com = new JComboBox(intArray);
cb.setPreferredSize(new Dimension(100, 30));
com.setPreferredSize(new Dimension(100, 30));
com.setRenderer(cb); add(com);
setVisible(true);
} class ComboBoxRenderer extends JLabel implements ListCellRenderer {
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
boolean cellHasFocus) {
int selectedIndex = ((Integer) value).intValue();
for(int i = 0; i < selectedIndex; i++) {
image = new ImageIcon("resource/" + i + ".gif");
setText("i");
setIcon(image);
}
return this;
}
} public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new CustomCombox();
}
});
}
}
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import javax.swing.SwingUtilities;public class CustomCombox extends JFrame {
JComboBox com;
ImageIcon image=new ImageIcon("image/face/1.gif");
ComboBoxRenderer cb;
String[] petStrings = {"Bird", "Cat", "Dog", "Rabbit", "Pig"};
Integer[] intArray = new Integer[petStrings.length];
CustomCombox() {
setSize(300,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
com=new JComboBox(intArray);
cb=new ComboBoxRenderer();
cb.setPreferredSize(new Dimension(100, 30));
com.setPreferredSize(new Dimension(100, 30));
com.setMaximumRowCount(15);
com.setRenderer(cb);
com.setMaximumRowCount(15);
add(com,BorderLayout.NORTH);
setVisible(true);
} class ComboBoxRenderer extends JLabel implements ListCellRenderer { ComboBoxRenderer()
{
setOpaque(true);
}
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
//int selectedIndex = ((Integer)value).intValue();
System.out.println(value+" "+index);
return this;
} }
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new CustomCombox();
}
});
}
}
真的非常谢谢楼上,为了这个问题,,都研究了两天了,现在终于有点眉目了..