1

我想将组合框添加到 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);

但我无法在单元格中获得组合框。是否可以设置组合框?

4

3 回答 3

3

您需要设置 JTable 的 TableCellEditor。最好搜索 Java 教程,但这里有一个简短的解释。

JTable 使用三个主要类来工作:

1)TableModel:它的作用是说表格有多少行和多少列,并为表格的数据服务,它的主要方法是getValue(row,col)和setValue(value, row,col)。并触发事件以通知 JTable 重绘。

2)TableCellRenderer:主要目的是在JTable的单元格中绘制组件。此组件仅涂漆:不工作!如果您绘制一个 JComboBox,如果您单击它,它不会破坏它,或者如果您绘制一个 JCheckbox,它不会选择/取消选择。

3)TableCellEditor:主要目的是在JTableCell中绘制一个组件来编辑单元格的值。它接收事件并决定何时开始编辑,然后调用它的 getTableCellEditorComponent 方法返回编辑器组件。返回的组件必须启动事件,以便 TableCellEditor 知道何时停止编辑并获取值并使用它来调用 TableModel.setvalue... 或取消编辑。

因此,要在 JTable 中显示 JComboBox,您必须创建自己的 TableCellEditor,如果您以前没有做过,这不是一件容易的事。

于 2010-03-30T09:11:11.573 回答
2

查看此 Java 教程并在此页面中搜索“使用组合框作为编辑器”

于 2010-03-30T07:59:12.087 回答
0

试试这个:它对我有用..单击单元格以查看组合框。

 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) {
        }
    }
于 2013-08-03T09:46:45.547 回答