2017-05-05 94 views
-1

我有JTableMULTIPLE_INTERVAL_SELECTION。我需要CONTROL + CLICK來選擇添加行。在我的LAF中,這不會自動發生。我寫了使用鼠標監聽下面的代碼:使用CTRL + CLICK在JTable中選擇多行

addMouseListener(new MouseAdapter() 
{ 
    @Override 
    public void mousePressed(MouseEvent event) 
    { 
     ListSelectionModel listSelectionModel = getSelectionModel(); 

     if (listSelectionModel.getSelectionMode() == 
       ListSelectionModel.MULTIPLE_INTERVAL_SELECTION) 
     { 
      if (event.isControlDown()) 
      { 
       int rowView = rowAtPoint(event.getPoint()); 

       if (isRowSelected(rowView)) 
       { 
        System.out.println("rowView already selected"); 

       } 

       listSelectionModel.addSelectionInterval(rowView, rowView); 
      } 
     } 
    } 
}); 

的問題是,在進入鼠標監聽前行選擇事件發生。被點擊的行被選中,但之前的選擇被清除。

我的問題是:

如何捕捉到評選活動由通自動選擇?

我可以捕獲該事件以阻止它清除以前的選擇,請使用getModifiers()來查看CONTROL鍵是否被按下,並致電addSelectionInterval

我需要幫助識別並設置一個偵聽器來執行此操作。

+0

請注意ListSelectionModel僅在2D數組中,可以有沒有自定義代碼部分的限制,那麼您必須使用getSelectedIndices()。length和get-setAnchor/LeadSelectionIndex來玩例如[code by](http:// stackoverflow。 com/a/10793911/714968)@aterai或[this one](http://stackoverflow.com/a/7620693/714968) – mKorbel

+0

您可能需要[consume](http://docs.oracle.com/javase /8/docs/api/java/awt/event/InputEvent.html#consume--)控制關閉時的MouseEvent,所以JTable不會試圖解釋它。請注意,點擊Control應該切換行的選擇,而不是單方面選擇行;這就是我所瞭解的每件作品的外觀和感覺。 – VGR

+0

我只需要有多個選擇。如果選中一行並按下另一行上的控制點擊,則需要選中並突出顯示這兩行。 – Kit

回答

-1

我的一位鼠標監聽者正在清除選中的選項,導致控件+單擊不工作。感謝您審查我的問題。