2014-02-27 54 views
0

通過單擊表單的其他空間來清除JTable選擇的最佳方式是什麼? 我嘗試這樣做:Java:通過單擊表格的其他空間清除JTable中的選擇

table1.addFocusListener(new MyTableFocusListener()); 

    ... 

    public class MyTableFocusListener implements FocusListener { 
     @Override 
     public void focusLost(FocusEvent e) 
     { 
      table1.getSelectionModel().clearSelection(); 
     } 

     @Override 
     public void focusGained(FocusEvent e) 
     { 
     } 
    } 

但有例外:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1 
+3

你有沒有使用剛剛試過['JTable中#clearSelection'(http://docs.oracle.com/javase/7/docs/api/javax/swing/JTable.html#clearSelection()) – MadProgrammer

回答

2

什麼是通過點擊表格的 其他空間來清除JTable中選擇最好的方法是什麼?

聽起來像MouseListener而不是FocusListener的工作。讓我們說你的桌子放在你的表格中的某個面板上。例如:

final JTable table = new JTable(model); 
JScrollPane scrollPane = new JScrollPane(table); 

JPanel formContent = new JPanel(); 
formContent.add(scrollPane); 

您可以將MouseListener添加到該板,並使用JTable.clearSelection()方法@MadProgramer曾建議:

formContent.addMouseListener(new MouseAdapter() { 
    @Override 
    public void mouseClicked(MouseEvent e) { 
     if(!table.contains(e.getPoint())) { // contains(Point point) method is inherited from java.awt.Component 
      table.clearSelection(); 
     } 
    }    
}); 

看看到:

相關問題