-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