JTable 单元格编辑器功能不适用于第二行



>我在 jinternalframe 中有表,其工作原理就像在上次编辑停止后,每当用户按 Enter Enter 下一个单元格时在编辑模式下选择下一个单元格一样,如果是最后一列,则选择将转到下一行,列号为 -1,但问题是当我加载类时,它与第二行的第一行一起工作,它不起作用。需要帮助我无法在谷歌上找到有关单元格编辑器的正确信息,我只需要使用编辑停止和编辑取消方法。

table.getDefaultEditor(String.class).addCellEditorListener(new CellEditorListener() {
        @Override
        public void editingStopped(ChangeEvent e) {
            if (table.getSelectedColumn() == 1
                    && table.getValueAt(table.getSelectedRow(), 1).toString().isEmpty()) {
                main = new MainWindow();
                main.itemdata.setSize(getDesktopPane().getWidth(), getDesktopPane().getHeight());
                main.itemdata.setLocation(0, 0);
                main.itemdata.show();
                getDesktopPane().add(main.itemdata);
                main.itemdata.moveToFront();
                main.itemdata.searchField.grabFocus();
                main.itemdata.searchField.selectAll();
            }
            else if (table.getSelectedColumn() == 5) {
                table.changeSelection(table.getSelectedRow(), 7, false, false);
                table.editCellAt(table.getSelectedRow(), table.getSelectedColumn());
            }
            else if (table.getSelectedColumn() == 7) {
                table.changeSelection(table.getSelectedRow(), 8, false, false);
                table.editCellAt(table.getSelectedRow(), table.getSelectedColumn());
            }
            else if (table.getSelectedColumn() == 8) {
                table.changeSelection(table.getSelectedRow() + 1, 1, false, false);
                table.editCellAt(table.getSelectedRow(), table.getSelectedColumn());
            }
        }
        @Override
        public void editingCanceled(ChangeEvent e) {
            System.out.println("Editing Cancelled");
        }
    });
    if (table.getSelectedColumn() == 1) {
                ItemData itemdata = null;
                if (itemdata == null) {
                    itemdata = new ItemData();
                    itemdata.setSize(getDesktopPane().getWidth(), getDesktopPane().getHeight());
                    itemdata.setLocation(0, 0);
                    itemdata.setVisible(true);
                    getDesktopPane().add(itemdata);
                    itemdata.moveToFront();
                    itemdata.searchField.grabFocus();
                    itemdata.searchField.selectAll();
                    System.out.println(table.getSelectedRow() + "+" + table.getSelectedColumn());
                }
                if (itemdata != null) {
                    itemdata.show();
                }
            } else if (table.getSelectedColumn() == 3) {
                table.changeSelection(table.getSelectedRow(), 5, false, false);
                table.editCellAt(table.getSelectedRow(), table.getSelectedColumn());
                System.out.println(table.getSelectedRow() + "+" + table.getSelectedColumn());
            }
            else if (table.getSelectedColumn() == 5) {
                table.changeSelection(table.getSelectedRow(), 7, false, false);
                table.editCellAt(table.getSelectedRow(), table.getSelectedColumn());
                System.out.println(table.getSelectedRow() + "+" + table.getSelectedColumn());
            } else if (table.getSelectedColumn() == 7) {
                table.changeSelection(table.getSelectedRow(), table.getSelectedColumn() + 1, false, false);
                table.editCellAt(table.getSelectedRow(), table.getSelectedColumn());
                System.out.println(table.getSelectedRow() + "+" + table.getSelectedColumn());
            } else if (table.getSelectedColumn() == 8) {
                table.changeSelection(table.getSelectedRow() + 1, 1, false, false);
                table.editCellAt(table.getSelectedRow(), table.getSelectedColumn());
                System.out.println(table.getSelectedRow() + "+" + table.getSelectedColumn());
            }

相关内容

最新更新