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

但是我不能得到在细胞的组合框。是否有可能设置组合框?

有帮助吗?

解决方案

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

JTable使用三种主要的类来工作:

1)的TableModel:它的功能是说表多少行和列具有与服务于表的数据,它的主要方法是的getValue(行,列)和setValue方法(值,行,列)。和火灾事件,通知JTable中重新绘制。

2)的TableCellRenderer:它的主要目的是绘制在JTable的细胞组分。此组件仅绘:不行!如果你画一个JComboBox,如果你点击它,或者如果你画一个JCheckBox的它wont't选择/取消选择它不会desplegate。

3)TableCellEditor的:它的主要目的是向一个JTableCell内绘制一个组件来编辑的单元格的值。它接收事件,并决定何时开始编辑,那么它的getTableCellEditorComponent方法被调用返回的编辑器组件。返回的组件必须发射事件,以便TableCellEditor的知道何时停止编辑,并获得价值,并用它来调用TableModel.setvalue ...或取消编辑。

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

其他提示

取alook在此 Java教程,该页面中搜索“使用组合框作为编辑器“

尝试这样的:其为me..click工作的小区看该组合框

 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) {
        }
    }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top