JCombobox, содержащий значения перечисления внутри таблицы - PullRequest
3 голосов
/ 25 апреля 2010

У меня есть класс, содержащий Enum со значениями. (имена) В другом классе я хотел бы ввести внутри таблицы тип ячейки JCombobox, который будет использовать эти значения перечислений. Моя проблема заключается в комбинировании между строковыми значениями и перечислением. например класс перечисления:

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 (перечисление jcombobox). Как я могу это сделать?

спасибо заранее.

1 Ответ

4 голосов
/ 25 апреля 2010

Вам необходимо установить TableCellEditor на JTable для отображения поля со списком.

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));

Я настоятельно рекомендую вам взглянуть на учебник Как использовать таблицы , если вы этого еще не сделали. Это объясняет это более подробно, и включает в себя пример кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...