我在我的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)
...
你能帮助我吗?
答案 0 :(得分:1)
您可能没有正确实现addRow()方法。
您需要将Movie对象添加到影片列表中,然后调用fireTableRowsInserted(...)。
结帐Row Table Model。 RowTableModel类将让您了解如何实现addRow()方法。