📅  最后修改于: 2023-12-03 15:09:44.152000             🧑  作者: Mango
JComboBox 是一个常见的 Swing 组件,它提供了下拉菜单的功能。通常情况下,我们使用 JComboBox 来提供一组选项供用户选择。但是在某些情况下,我们需要 JComboBox 的选项是有限的且固定的。在这种情况下,使用 Java 枚举类型就可以方便地为 JComboBox 提供选项。
本文将介绍如何使用枚举类型创建 JComboBox,以及如何使用 JComboBox 中的枚举值。
在使用 JComboBox 和枚举类型之前,我们需要先定义一个枚举类型的选项列表。例如:
public enum DayOfWeek {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
接下来,我们可以使用 JComboBox
类的一个构造函数来创建一个 JComboBox,并将枚举类型的值传递给它:
JComboBox<DayOfWeek> comboBox = new JComboBox<>(DayOfWeek.values());
这行代码创建了一个 JComboBox,并将 DayOfWeek.values()
的返回值作为选项列表。这个方法返回一个表示枚举常量的数组。
当用户从下拉菜单中选择了一个枚举值时,我们需要使用 getSelectedItem()
方法获取被选中的项。但是,由于我们使用了泛型,所以这个方法返回的是一个枚举类型的实例,而不是一个字符串。
DayOfWeek selectedDay = (DayOfWeek) comboBox.getSelectedItem();
这行代码将返回被选中的枚举值,并使用 (DayOfWeek)
将其转换成正确的类型。
这里提供一个简单的例子,在这个例子中,我们创建了一个 JFrame 和一个 JComboBox,下拉菜单的选项是我们在第 1 步中创建的 DayOfWeek
枚举类型。
import javax.swing.*;
import java.awt.*;
public class EnumJComboBoxExample {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
JComboBox<DayOfWeek> comboBox = new JComboBox<>(DayOfWeek.values());
comboBox.addActionListener(e -> {
DayOfWeek selectedDay = (DayOfWeek) comboBox.getSelectedItem();
JOptionPane.showMessageDialog(null, selectedDay + " was selected.");
});
panel.add(comboBox, BorderLayout.CENTER);
frame.add(panel);
frame.setVisible(true);
}
}
enum DayOfWeek {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
这个例子创建了一个 JFrame、一个 JPanel 和一个 JComboBox。当用户选择一个选项时,一个对话框会弹出,显示用户选择的选项。可对转换枚举这里的部分进行修改,来完成相应的需求。