使用 CTRL+CLICK 在 JTable 中 select 多行
Using CTRL+CLICK to select multiple rows in JTable
我有一个 JTable
和 MULTIPLE_INTERVAL_SELECTION
。我需要 CONTROL+CLICK 到 select 添加行。在我的 LAF 中,这不会自动发生。我编写了以下使用鼠标侦听器的代码:
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);
}
}
}
});
问题是行 selection 事件发生在鼠标侦听器输入之前。单击的行已 selected,但之前的 selections 已清除。
我的问题是:
如何捕获 selection 事件以绕过自动 selection?
我可以捕获该事件以阻止它清除之前的 select 离子,使用 getModifiers()
查看是否按下了 CONTROL 键,然后调用 addSelectionInterval
?
我需要帮助来识别和设置侦听器来执行此操作。
我的一个鼠标侦听器正在清除选择,这使得 control+click 看起来不起作用。感谢您审阅我的问题。
我有一个 JTable
和 MULTIPLE_INTERVAL_SELECTION
。我需要 CONTROL+CLICK 到 select 添加行。在我的 LAF 中,这不会自动发生。我编写了以下使用鼠标侦听器的代码:
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);
}
}
}
});
问题是行 selection 事件发生在鼠标侦听器输入之前。单击的行已 selected,但之前的 selections 已清除。
我的问题是:
如何捕获 selection 事件以绕过自动 selection?
我可以捕获该事件以阻止它清除之前的 select 离子,使用 getModifiers()
查看是否按下了 CONTROL 键,然后调用 addSelectionInterval
?
我需要帮助来识别和设置侦听器来执行此操作。
我的一个鼠标侦听器正在清除选择,这使得 control+click 看起来不起作用。感谢您审阅我的问题。