多选JTable + Jcombobox(单元编辑器)+单击

时间:2013-10-01 15:11:38

标签: java swing jtable renderer

我有一个接受多选的表。在这个jtable上我添加了一个列,我添加了一个这样的组合框:

public void setPriorityEditor(final String columnName) {
        final TableColumn col = ((BasicTableModel) table.getModel())
            .findTableColumn(columnName);
        col.setCellEditor(new PriorityComboBoxEditor());
    }

我想实现一项新功能: 可以使用组合框更新多个字段,这是我选择的一部分。 http://imageshack.us/photo/my-images/40/qyks.png/ 当我想在我的选择中选择一行时,我的问题开始选择avec选择几行,选择是刷新,我现在只选择了一行。 有可能吗?

摘要: 尝试使用多选项更新多个列。 行包含一个带有组合框的列。 选择多个行并使用组合框(它是所选行的一部分),以使用组合框的值更新所有行特定列。

关心家伙。

1 个答案:

答案 0 :(得分:0)

所以我改变了changeSelection()方法中的代码,如下所示:

if (extend) {
            super.changeSelection(rowIndex, columnIndex, toggle, extend);
            listTest = new ArrayList<Object>();
            for (int e : modelTable.getToolTipsJTable().getSelectedRows()) {
                listTest.add(e);
            }
            isExtend = true;
        } else {
            // super.changeSelection(rowIndex, columnIndex, toggle, extend);
            if (modelTable.getToolTipsJTable().getSelectedRows().length > 1) {
                listTest = new ArrayList<Object>();
                for (int e : modelTable.getToolTipsJTable()
                    .getSelectedRows()) {
                    listTest.add(e);
                }
                isExtend = true;
            }
            if (isExtend) {
                boolean isSame = false;
                for (Object i : listTest) {
                    if (((Integer) i).intValue() == rowIndex) {
                        isSame = true;
                    }
                }
                if (!isSame) {
                    isExtend = false;
                    super.changeSelection(rowIndex, columnIndex, toggle,
                        extend);
                }
            } else {
                super
                    .changeSelection(rowIndex, columnIndex, toggle, extend);
            }
        }

这只是为了分析,忘记清洁和表现:D 如果您需要更多信息,请添加评论。