使用Enum类填充JComboBox

时间:2023-01-28 18:03:15

I'm trying to populate JComboBox with enums declared in Colour.java. I can access the description of the enums using Colour.values() but is it possible to access the enum declaration itself? I'd like the JComboBox populated with Blue and Red. I've had a look at http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html to no avail.

我正在尝试使用Colour.java中声明的枚举填充JComboBox。我可以使用Colour.values()访问枚举的描述,但是可以访问枚举声明本身吗?我喜欢用蓝色和红色填充的JComboBox。我看过http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html无济于事。

package example;
import javax.swing.*;

public class ColourView extends View {

private JLabel colourLabel;
private JComboBox comboBox;
private DefaultComboBoxModel model;

public ColourView() {
    colourLabel = new JLabel();
    colourLabel.setText("Colours");
    colourLabel.setBounds(20, 30, 70, 20);
    mainContentLayeredPane.add(colourLabel, JLayeredPane.DEFAULT_LAYER);

    comboBox = new JComboBox(Colour.values());     

    comboBox.setSize(100, 20);
    mainContentLayeredPane.add(comboBox, JLayeredPane.DEFAULT_LAYER);
}

public void setComboBox(String[] list) {
    model = new DefaultComboBoxModel(list);
    comboBox.setModel(model);
}
}

package example;

public enum Colour {
BLUE("Blue Paint", 12),
RED("Red Paint", 4);
private String description;
private int value; 

Colour(String description, int value){
    this.description = description; 
    this.value = value; 
}

public String getDescription() {
    return description;
}

public void setDescription(String description) {
    this.description = description;
}

public int getValue() {
    return value;
}

@Override
public String toString() {
    return description;
}
}

1 个解决方案

#1


2  

If you want a little sample of the same color to show up next to the color name, you'll need a custom renderer. If you start with a DefaultListCellRenderer, you can add an Icon that's painted with the same color, or change the background like they show here.

如果您想在颜色名称旁边显示相同颜色的小样本,则需要自定义渲染器。如果从DefaultListCellRenderer开始,则可以添加使用相同颜色绘制的Icon,或更改此处显示的背景。

#1


2  

If you want a little sample of the same color to show up next to the color name, you'll need a custom renderer. If you start with a DefaultListCellRenderer, you can add an Icon that's painted with the same color, or change the background like they show here.

如果您想在颜色名称旁边显示相同颜色的小样本,则需要自定义渲染器。如果从DefaultListCellRenderer开始,则可以添加使用相同颜色绘制的Icon,或更改此处显示的背景。