java中Swing中JComboBox的值如何添加进去,看图,没有addItem()....

java中Swing中JComboBox的值如何添加进去,看图,没有addItem()....,第1张

我想应该是你弄错了,

添加相有两种方法,一种是通过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开始


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11274746.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存