JCombobox包含表中的枚举值

时间:2010-04-25 12:57:13

标签: java swing enums jcombobox

我有一个包含Enum值的类。 (名) 在其他类中,我想在表格中输入将使用这些枚举值的JCombobox单元格类型。 我的问题是在字符串值和枚举之间进行组合。 例如enum类:

  
    

enum item_Type {entree,main_Meal,Dessert,Drink}

  

例如表类: setTitle(“添加新项目”);         setSize(300,80);         setBackground(Color.gray);

    // Create a panel to hold all other components
    topPanel = new JPanel();
    topPanel.setLayout( new BorderLayout() );
    getContentPane().add( topPanel );

    //new JComboBox(item_Type.values());
    JComboBox aaa = new JComboBox();
    aaa = new JComboBox(item_Type.values());
    TableColumn sportColumn = table.getColumnModel().getColumn(2);

    // Create columns names
    String columnNames[] = {"Item Description", "Item Type", "Item Price"};

    // Create some data
    String dataValues[][] = {{ "0", aaa, "0" }};
    // Create a new table instance
    table = new JTable( dataValues, columnNames );

    // Add the table to a scrolling pane
    scrollPane = new JScrollPane( table );
    topPanel.add( scrollPane, BorderLayout.CENTER );

我知道在dataValues数组中我不能使用aaa(enum jcombobox)。 我怎么能这样做?

提前感谢。

1 个答案:

答案 0 :(得分:4)

您需要在JTable上设置TableCellEditor以显示组合框。

TableColumn column = table.getColumnModel().getColumn(2);
column.setCellEditor(new DefaultCellEditor(aaa));

dataValues数组中,只需使用占位符代替组合框:

String dataValues[][] = {{ "0", "entree", "0" }};

当然,您需要在创建表后设置列编辑器

String dataValues[][] = {{ "0", "entree", "0" }};
JTable table = new JTable(dataValues, columnNames);
TableColumn column = table.getColumnModel().getColumn(2);
column.setCellEditor(new DefaultCellEditor(aaa));

我强烈建议您查看How to Use Tables教程,如果您还没有。它更详细地解释了这一点,并包含示例代码。