繁体   English   中英

我可以将组合框添加到JTable的特定单元格吗?

[英]can i add the combobox into particular cell of the JTable?

我想将组合框添加到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:它的功能是说表有多少行和多少列并为Table的数据提供服务,它的主要方法是getValue(row,col)和setValue(value,row,col)。 并触发事件以通知JTable重新绘制。

2)TableCellRenderer:它的主要目的是在JTable的单元格中绘制组件。 该组件仅涂有油漆:无效! 如果绘制JComboBox,则单击它不会消失;如果绘制JCheckbox,则不会选择/取消选择。

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

因此,要在JTable中显示JComboBox,必须创建自己的TableCellEditor,如果您以前没有做过,那么就不容易。

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

尝试以下操作:它对我有用。.单击单元格以查看组合框。

 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 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM