当JTable中的表失去焦点时,如何取消选择该行?

时间:2015-03-26 12:33:19

标签: java swing jtable focuslistener

为了选择一行,我使用以下代码:

table_2.addMouseListener(new MouseAdapter() {
          @Override
          public void mousePressed(MouseEvent event1) {
          if (event1.getButton() == MouseEvent.BUTTON3) {
                  Point point = event1.getPoint();
                  int column = table_2.columnAtPoint(point);
                  int row = table_2.rowAtPoint(point);
                  table_2.setColumnSelectionInterval(column, column);
                  table_2.setRowSelectionInterval(row, row);
          }
       }
  });

然后,要重置突出显示的行,我使用以下代码:

table_2.addFocusListener(new FocusAdapter() {
    @Override
    public void focusLost(FocusEvent arg0) {
       table_2.clearSelection();
    }
});  

但我想知道,是否有任何其他方式重置突出显示的行?
所以我得到了:

table_2.getSelectedRow()==-1

1 个答案:

答案 0 :(得分:3)

  

为了选择一行,我使用以下代码:

更简单的方法是使用:

table.changeSelection(row, column, false, false);
  

然后,要重置突出显示的行,我使用以下代码:

当您单击表中的另一个单元格时,没有生成focusLost(..)事件,因为焦点仍在表上。无需清除选择,因为当您使用我建议的代码单击另一行时,将自动清除选择。

if (event1.getButton() == MouseEvent.BUTTON3) {

不要使用“MouseEvent.BUTTON3”,人们不知道这意味着什么。而是使用

//if (SwingUtilties.isRightMouseButton( event1 ))
if (SwingUtilities.isRightMouseButton( event1 ))

更容易阅读和理解。