一个jtable布局在一个jframe中,鼠标选中了table中的某行数据,现在我想在鼠标点击其他位置(jtable以外的位置)时,table中处于选中状态的数据行选中状态被取消。 如何实现啊?
  第一次上这个网站,同学推荐的,不知道这个分是干什么用的,给50分行吗?

解决方案 »

  1.   

    鼠标点击其他位置(jtable以外的位置)时
    ======================================
    这个很难实现,其实Table组件都有这个毛病
    表格处于编辑状态时,点击表格以外的位置让表格取消编辑状态比较难实现
    我看过很多系统,好像没有实现了的,都得在表格中点击
    至于取消选中状态,可以设置选中行的数组为空
      

  2.   

    是啊 我设置的监听器根本就捕捉不到点击table以外的事件 
    可是这个功能应该是比较常见的啊。
      

  3.   

    1、如果你点击的其它位置是一个可以获得焦点的组件,那么就会触发JTable焦点丢失事件,丢失焦点时可以将JTable的选择状态清除
    table.addFocusListener(new FocusListener(){
      public void focusGained(FocusEvent e) {}
      public void focusLost(FocusEvent e) {
       if (!e.isTemporary()) {
         table.clearSelection();
       }
      }
    });2、如果单击的地方是窗体空白处,该处无法获取焦点,那么可以通过添加JFrame的鼠标监听事件,如果窗体被点击,那么将table选择状态清除frame.addMouseListener(new MouseAdapter(){
     public void mouseClicked(MouseEvent e) {
       table.clearSelection();
     }
    });