在 MouseListener.mouseClicked 事件中,透過 rowAtPoint 獲取點擊行索引,再操作 DefaultTableModel 移除即可。
JTable sourceTable = (JTable) evt.getSource();
if (sourceTable.getRowCount() <= 0) return;
int rowIndex = sourceTable.rowAtPoint(evt.getPoint());
if (rowIndex >= 0) { // 防止點擊空白區域返回 -1
DefaultTableModel model = (DefaultTableModel) sourceTable.getModel();
model.removeRow(rowIndex);
}
evt 為 java.awt.event.MouseEventDefaultTableModel 或自行轉型mouseClicked 中判斷 evt.getClickCount() == 2 確保雙擊觸發table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
JTable target = (JTable) e.getSource();
int row = target.rowAtPoint(e.getPoint());
if (row != -1) {
((DefaultTableModel) target.getModel()).removeRow(row);
}
}
}
});