public class LabelCellRender extends JLabel implements ListCellRenderer { public LabelCellRender() { this.setOpaque(true); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { if(value!=null) { setText(value.toString()); setBackground(isSelected ? Color.darkGray: Color.white); setForeground(isSelected ? Color.white : Color.black); } return this; } } LabelCellRender label = new LabelCellRender(); label.setIcon(new ImageIcon("c:/1.gif")); box.setRenderer(label); box.addItem("asdfs"); box.addItem("bbbbccc");
import java.awt.*; import java.awt.event.*; import javax.swing.*;/* * iconStrings数组表示一个图片列表。注意将五张不同的gif图片放到类文件的同级 *目录下的images文件夹中,然后运行程序! */ public class CustomComboBoxDemo extends JPanel { ImageIcon[] images; String[] iconStrings = {"1", "2", "3", "4", "5"}; public CustomComboBoxDemo() { //Load the pet images and create an array of indexes. images = new ImageIcon[iconStrings.length]; Integer[] intArray = new Integer[iconStrings.length]; for (int i = 0; i < iconStrings.length; i++) { intArray[i] = new Integer(i); images[i] = createImageIcon("images/" + iconStrings[i] + ".gif"); if (images[i] != null) { images[i].setDescription(iconStrings[i]); } } //Create the combo box. JComboBox petList = new JComboBox(intArray); ComboBoxRenderer renderer= new ComboBoxRenderer(); renderer.setPreferredSize(new Dimension(200, 130)); petList.setRenderer(renderer); petList.setMaximumRowCount(3); //Lay out the demo. setLayout(new BorderLayout()); add(petList, BorderLayout.PAGE_START); setBorder(BorderFactory.createEmptyBorder(20,20,20,20)); } /** Returns an ImageIcon, or null if the path was invalid. */ protected static ImageIcon createImageIcon(String path) { java.net.URL imgURL = CustomComboBoxDemo.class.getResource(path); if (imgURL != null) { return new ImageIcon(imgURL); } else { System.err.println("Couldn't find file: " + path); return null; } } public static void main(String s[]) { //Make sure we have nice window decorations. JFrame.setDefaultLookAndFeelDecorated(true); //Create and set up the window. JFrame frame = new JFrame("CustomComboBoxDemo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setContentPane(new CustomComboBoxDemo()); //Display the window. frame.pack(); frame.setVisible(true); } class ComboBoxRenderer extends JLabel implements ListCellRenderer { private Font uhOhFont; public ComboBoxRenderer() { setOpaque(true); setHorizontalAlignment(CENTER); setVerticalAlignment(CENTER); } /* * This method finds the image and text corresponding * to the selected value and returns the label, set up * to display the text and image. */ public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { //Get the selected index. (The index param isn't //always valid, so just use the value.) int selectedIndex = ((Integer)value).intValue(); if (isSelected) { setBackground(list.getSelectionBackground()); setForeground(list.getSelectionForeground()); } else { setBackground(list.getBackground()); setForeground(list.getForeground()); } //Set the icon and text. If icon was null, say so. ImageIcon icon = images[selectedIndex]; String iconName = iconStrings[selectedIndex]; setIcon(icon); if (icon != null) { setText(iconName); setFont(list.getFont()); } else { setUhOhText(iconName + " (no image available)", list.getFont()); } return this; } //Set the font and text when no image was found. protected void setUhOhText(String uhOhText, Font normalFont) { if (uhOhFont == null) { //lazily create this font uhOhFont = normalFont.deriveFont(Font.ITALIC); } setFont(uhOhFont); setText(uhOhText); } } }
如需要源码,留下e_mail
this.setOpaque(true);
} public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
if(value!=null)
{
setText(value.toString());
setBackground(isSelected ? Color.darkGray: Color.white);
setForeground(isSelected ? Color.white : Color.black);
}
return this;
}
}
LabelCellRender label = new LabelCellRender();
label.setIcon(new ImageIcon("c:/1.gif"));
box.setRenderer(label);
box.addItem("asdfs");
box.addItem("bbbbccc");
import java.awt.event.*;
import javax.swing.*;/*
* iconStrings数组表示一个图片列表。注意将五张不同的gif图片放到类文件的同级
*目录下的images文件夹中,然后运行程序!
*/
public class CustomComboBoxDemo extends JPanel {
ImageIcon[] images;
String[] iconStrings = {"1", "2", "3", "4", "5"};
public CustomComboBoxDemo() {
//Load the pet images and create an array of indexes.
images = new ImageIcon[iconStrings.length];
Integer[] intArray = new Integer[iconStrings.length];
for (int i = 0; i < iconStrings.length; i++) {
intArray[i] = new Integer(i);
images[i] = createImageIcon("images/" + iconStrings[i] + ".gif");
if (images[i] != null) {
images[i].setDescription(iconStrings[i]);
}
} //Create the combo box.
JComboBox petList = new JComboBox(intArray);
ComboBoxRenderer renderer= new ComboBoxRenderer();
renderer.setPreferredSize(new Dimension(200, 130));
petList.setRenderer(renderer);
petList.setMaximumRowCount(3); //Lay out the demo.
setLayout(new BorderLayout());
add(petList, BorderLayout.PAGE_START);
setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
} /** Returns an ImageIcon, or null if the path was invalid. */
protected static ImageIcon createImageIcon(String path) {
java.net.URL imgURL = CustomComboBoxDemo.class.getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL);
} else {
System.err.println("Couldn't find file: " + path);
return null;
}
} public static void main(String s[]) {
//Make sure we have nice window decorations.
JFrame.setDefaultLookAndFeelDecorated(true); //Create and set up the window.
JFrame frame = new JFrame("CustomComboBoxDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(new CustomComboBoxDemo()); //Display the window.
frame.pack();
frame.setVisible(true);
} class ComboBoxRenderer extends JLabel
implements ListCellRenderer {
private Font uhOhFont; public ComboBoxRenderer() {
setOpaque(true);
setHorizontalAlignment(CENTER);
setVerticalAlignment(CENTER);
} /*
* This method finds the image and text corresponding
* to the selected value and returns the label, set up
* to display the text and image.
*/
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
//Get the selected index. (The index param isn't
//always valid, so just use the value.)
int selectedIndex = ((Integer)value).intValue(); if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
} else {
setBackground(list.getBackground());
setForeground(list.getForeground());
} //Set the icon and text. If icon was null, say so.
ImageIcon icon = images[selectedIndex];
String iconName = iconStrings[selectedIndex];
setIcon(icon);
if (icon != null) {
setText(iconName);
setFont(list.getFont());
} else {
setUhOhText(iconName + " (no image available)",
list.getFont());
} return this;
} //Set the font and text when no image was found.
protected void setUhOhText(String uhOhText, Font normalFont) {
if (uhOhFont == null) { //lazily create this font
uhOhFont = normalFont.deriveFont(Font.ITALIC);
}
setFont(uhOhFont);
setText(uhOhText);
}
}
}