-1
我有JTable
和MULTIPLE_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
?
我需要幫助識別並設置一個偵聽器來執行此操作。
請注意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
您可能需要[consume](http://docs.oracle.com/javase /8/docs/api/java/awt/event/InputEvent.html#consume--)控制關閉時的MouseEvent,所以JTable不會試圖解釋它。請注意,點擊Control應該切換行的選擇,而不是單方面選擇行;這就是我所瞭解的每件作品的外觀和感覺。 – VGR
我只需要有多個選擇。如果選中一行並按下另一行上的控制點擊,則需要選中並突出顯示這兩行。 – Kit