JTable1.addMouseListener(new RightClickListener());
class RightClickListener extends MouseAdapter {
  public void mousePressed(MouseEvent e) {
      selectTable(e);
  }
  public void mouseReleased(MouseEvent e) {
      selectTable(e);
  }
  private void selectTable(MouseEvent e) {
         int row = JTable1.rowAtPoint(e.getPoint());
         if(row>=0)
           JTable1.setRowSelectionInterval(row,row);
         
   }
 }

解决方案 »

  1.   

    class MyListener extends MouseAdapter{/**    public void mousePressed(MouseEvent me){
          JTable table=(JTable)me.getSource();
          if((me.getModifiers()&InputEvent.BUTTON3_MASK)!=0){
            Point p = me.getPoint();
            int row = table.rowAtPoint(p);
            int column = table.columnAtPoint(p);
           if(!me.isControlDown()&!me.isShiftDown()&row!=-1&column!=-1) table.changeSelection(row, column, me.isControlDown(), me.isShiftDown());
          }
          System.out.println("confirm");
          }    /**
         * @param me MouseEvent
         */
        public void mouseReleased(MouseEvent me){
          if((me.getModifiers()&InputEvent.BUTTON3_MASK)!=0) //show something
        }
    JTable1.addMouseListener(new MyListener());
      

  2.   

    上面的MouseListener 的mousePressed 对右键点击加了些判断,排除按下了Ctrl和Shift,只能单选,取得选中的行列值,排除table范围之外(代码可以从jdk中找到)。mouseReleased可以show一个popmenu之类的。