在JTable中编辑新添加的行

时间:2013-11-09 18:48:45

标签: java swing popupmenu

我在我的JTable中用这个弹出菜单添加了一行:

    final JPopupMenu popupMenu = new JPopupMenu();
    JMenuItem addItem = new JMenuItem("Add Movie");
    JMenuItem deleteItem = new JMenuItem("Delete Movie");

    addItem.addActionListener(new ActionListener() 
    {
        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("test");
            Object frame = null;
            JOptionPane.showMessageDialog((Component) frame, "Movie wurde hinzugefügt!");

            model.addRow(new Movie("", 0, "", "", null, "DE"));
        }
    });
    deleteItem.addActionListener(new ActionListener() 
    {
        @Override
        public void actionPerformed(ActionEvent e) {
            Object frame = null;
            JOptionPane.showMessageDialog((Component) frame, "Movie wurde gelöscht");
        }
    });

    popupMenu.add(addItem);
    popupMenu.add(deleteItem);
    table.setComponentPopupMenu(popupMenu);

但是,当我尝试编辑此行中的值时,我会收到错误消息。 有人知道为什么吗?

Exception in thread "AWT-EventQueue-3" java.lang.IndexOutOfBoundsException: Invalid range
at javax.swing.DefaultRowSorter.rowsUpdated(DefaultRowSorter.java:896)
at javax.swing.DefaultRowSorter.rowsUpdated(DefaultRowSorter.java:915)
at javax.swing.JTable.notifySorter(JTable.java:4264)
at javax.swing.JTable.sortedTableChanged(JTable.java:4118)
at javax.swing.JTable.tableChanged(JTable.java:4395)
...

你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

您可能没有正确实现addRow()方法。

您需要将Movie对象添加到影片列表中,然后调用fireTableRowsInserted(...)。

结帐Row Table Model。 RowTableModel类将让您了解如何实现addRow()方法。