0

この 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)
...

手伝って頂けますか?

4

1 に答える 1

1

addRow() メソッドを適切に実装していない可能性があります。

Movie オブジェクトをムービー リストに追加してから、fireTableRowsInserted(...) を呼び出す必要があります。

行テーブル モデルを確認してください。RowTableModel クラスは、addRow() メソッドを実装する方法のアイデアを提供します。

于 2013-11-09T19:52:01.680 に答える