我有一个包含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)。 我怎么能这样做?
提前感谢。
答案 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教程,如果您还没有。它更详细地解释了这一点,并包含示例代码。