我想在编辑表格单元格后执行操作。但是,在我使用tablechanged
并打印源单元格之后,出现了错误。然后,我设法发现错误是由于e.source
不是table
的实例,而是DefaultTableModel
的实例。如何在编辑后得到所选的行和列?
这里是示例代码:
public static void main(String[] args) {
JFrame main = new JFrame();
JTable table = new JTable(6, 4);
table.setSize(300, 300);
table.getModel().addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent e) {
Object s = e.getSource();
//JTable t = (JTable) s;
//int x = t.getSelectedRow();
//int y = t.getSelectedColumn();
//System.out.println("Cell at " + x + "," + y);
if (s instanceof JTable)
System.out.println("TABLE");
else
System.out.println("Not a table");
}
});
main.add(table);
main.setSize(300,300);
main.setLocationRelativeTo(null);
main.setVisible(true);
main.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
((TableModel)e.getSource()).getValueAt
和e.getFirstRow/LastRow
之间的行。