我想应该是你弄错了,
添加相有两种方法,一种是通过addItem(Object)另一种是在初始化jcb的时候直接new JComboBox(Vector v)
import java.awt.*import java.awt.event.*
import javax.swing.*
/*
* CustomComboBoxDemo.java 你要有下列文件
* images/Bird.gif
* images/Cat.gif
* images/Dog.gif
* images/Rabbit.gif
* images/Pig.gif
*/
public class CustomComboBoxDemo extends JPanel {
ImageIcon[] images
String[] petStrings = {"Bird", "Cat", "Dog", "Rabbit", "Pig"}
/*
* Despite its use of EmptyBorder, this panel makes a fine content
* pane because the empty border just increases the panel's size
* and is "painted" on top of the panel's normal background. In
* other words, the JPanel fills its entire background if it's
* opaque (which it is by default)adding a border doesn't change
* that.
*/
public CustomComboBoxDemo() {
super(new BorderLayout())
//Load the pet images and create an array of indexes.
images = new ImageIcon[petStrings.length]
Integer[] intArray = new Integer[petStrings.length]
for (int i = 0i <petStrings.lengthi++) {
intArray[i] = new Integer(i)
images[i] = createImageIcon("images/" + petStrings[i] + ".gif")
if (images[i] != null) {
images[i].setDescription(petStrings[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.
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
}
}
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
*/
private static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("CustomComboBoxDemo")
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
//Create and set up the content pane.
JComponent newContentPane = new CustomComboBoxDemo()
newContentPane.setOpaque(true)//content panes must be opaque
frame.setContentPane(newContentPane)
//Display the window.
frame.pack()
frame.setVisible(true)
}
public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI()
}
})
}
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 pet = petStrings[selectedIndex]
setIcon(icon)
if (icon != null) {
setText(pet)
setFont(list.getFont())
} else {
setUhOhText(pet + " (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)
}
}
}
JComboBox comboBox = new JComboBox(arr)//在监听里
comboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String selectedStr = comboBox.getSelectedItem().toString()//选中字符串
comboBox.getSelectedIndex()//索引从0开始
}
})
//外面也可以用的
String selectedStr = comboBox.getSelectedItem().toString()//选中字符串
comboBox.getSelectedIndex()//索引从0开始
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)