Могу ли я добавить комбинированный список в определенную ячейку JTable? - PullRequest
1 голос
/ 30 марта 2010

Я хочу добавить комбобокс в ячейку JTable.

model=new DefaultTableModel(data,col);
JTableHeader head=new JTableHeader();
head.setBackground(Color.BLUE);
table=new JTable(model);
table.add(head);
JComboBox combo = new JComboBox();
combo.addItem("Names");
combo.addItem("Antony");
combo.addItem("Victor");
combo.addItem("Ramkumar");
table.add(combo);

Но я не могу достать комбобокс в клетке. Можно ли установить поле со списком?

Ответы [ 3 ]

3 голосов
/ 30 марта 2010

Вам необходимо установить TableCellEditor JTable. Лучше искать учебники по Java, но вот краткое объяснение.

JTable использует три основных класса для работы:

1) TableModel: его функция состоит в том, чтобы определять количество строк и столбцов в таблице и обслуживать данные таблицы, ее основными методами являются getValue (строка, столбец) и setValue (значение, строка, столбец). И запускать события для уведомления перерисовок JTable.

2) TableCellRenderer: его главная цель - рисовать компоненты в ячейках JTable. Эти компоненты только окрашены: НЕ РАБОТАЕТ! если вы нарисуете JComboBox, он не будет обескровливаться, если вы щелкнете по нему или если вы нарисуете JCheckbox, он не будет выбирать / отменять выбор.

3) TableCellEditor: его главная цель - нарисовать компонент внутри JTableCell, чтобы отредактировать значение ячейки. Он получает события и решает, когда начать редактирование, затем вызывается метод getTableCellEditorComponent для возврата компонента редактора. Возвращенный компонент должен запускать события, чтобы TableCellEditor знал, когда следует остановить редактирование, получить значение и использовать его для вызова TableModel.setvalue ... или отменить редактирование.

Чтобы показать JComboBox в JTable, вы должны создать свой собственный TableCellEditor, а это непростая задача, если вы еще этого не сделали.

2 голосов
/ 30 марта 2010

Взгляните на это Учебник по Java и найдите на этой странице «Использование комбинированного окна в качестве редактора»

0 голосов
/ 03 августа 2013

Попробуйте: это работает для меня ... нажмите на ячейку, чтобы увидеть поле со списком.

 private void comboloader() {
        try {
            TableColumn gradeColumn = jTable1.getColumnModel().getColumn(0);
            JComboBox comboBox = new JComboBox();

            comboBox.removeAllItems();

            try {
                comboBox.addItem("Item 1");
                comboBox.addItem("Item 2");
                comboBox.addItem("Item 3");

            } catch (NullPointerException e) {
            } catch (Exception e) {
                e.printStackTrace();
            }
            gradeColumn.setCellEditor(new DefaultCellEditor(comboBox));
        } catch (Exception e) {
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...