【问题标题】:Firing itemStateChanged event on Combo box inside jTable在 jTable 内的组合框中触发 itemStateChanged 事件
【发布时间】:2013-09-28 21:42:59
【问题描述】:

我的问题是我想在 jTable 内的组合框上有一个 itemSateChanged 侦听器。当我更改组合框的值时,我希望将数据添加到 jTable 的相关行中的单元格中。

这是创建组合框的代码。

public void setUpSectionColumn(JTable table, TableColumn statusColumn) {
    //Set up the editor for the sport cells.
    JComboBox comboBox = new JComboBox();
    comboBox.addItem("Lending");
    comboBox.addItem("Childen Lending");
    comboBox.addItem("Reference");
    comboBox.addItem("Special Collection");

    statusColumn.setCellEditor(new DefaultCellEditor(comboBox));

    //Set up tool tips for the sport cells.
    DefaultTableCellRenderer renderer =
            new DefaultTableCellRenderer();
    renderer.setToolTipText("Click for combo box");
    statusColumn.setCellRenderer(renderer);
}

这是我为监听器想出的方法,但不起作用。

public void fillTable2() {
    jTable2.getModel().addTableModelListener(new TableModelListener() {
        public void tableChanged(TableModelEvent evt) {
            int row = jTable2.getSelectedRow();
            String section;
            if (row == -1) {
                section = "Lending";
            } else {
                section = jTable2.getValueAt(row, 3).toString();
            }
            int accessNo = bdao.getLastAccessNo(section);
            DefaultTableModel model = (DefaultTableModel) jTable2.getModel();
            Object[] rowdata = {Integer.toString(accessNo), "", ""};
            model.addRow(rowdata);
        }
    });
}

【问题讨论】:

  • 是可能的,但在大多数情况下,没有理由重写 JComboBox 和使用 ItemListener,我会在 DefaultTableModel 中重写 setValueAt,为具体行生成值

标签: java swing combobox jtable tablecelleditor


【解决方案1】:

正如here 所讨论的,您可以将JComboBox 用作TableCellEditor。有一个使用 DefaultCellEditor 的示例 here

【讨论】:

  • 这正是我想要的!
猜你喜欢
  • 2021-01-20
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-01
相关资源
最近更新 更多