//右击弹出菜单
if (SwingUtilities.isRightMouseButton(e)) {
JPopupMenu popMenu = null ;
JTable table = (JTable) e.getComponent();
//获取鼠标右键选中的行
int row = table.rowAtPoint(e.getPoint());
if (row == -1) {
return ;
}
//获取已选中的行
int[] rows = table.getSelectedRows();
boolean inSelected = false ;
//判断当前右键所在行是否已选中
for(int r : rows){
if(row == r){
inSelected = true ;
break ;
}
}
//当前鼠标右键点击所在行不被选中则高亮显示选中行
if(!inSelected){
table.setRowSelectionInterval(row, row);
}
//生成右键菜单
popMenu = makePopup();
popMenu.show(e.getComponent(), e.getX(), e.getY());
}
当右键所在位置非选中行,则将选中行切换到鼠标右键位置对于的行。