1

这是我的代码。我想在 中选择多行JTable,我正在使用以下行:

table.getColumnModel().getSelectionModel().setSelectionMode(
    javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

使用上面的行,我可以使用键盘选择多行,但要求只能使用鼠标进行选择。

除此以外,Java 仅使用鼠标而不使用键盘提供多项选择吗?

4

4 回答 4

2

如果您有此代码,则只需按下 ctrl + 单击多个。

编辑:但如果你不想使用键盘,我想,试试这个:

在不使用 Ctrl/Command 键的情况下选择 JList 中的多个项目

于 2012-07-05T07:08:20.683 回答
2

我不认为这是可能的。我建议在表格中添加一个附加列,其中包含一个复选框,允许将该行标记为选中。当然,您将无法使用表格选择模型来知道选择了哪些行。

于 2012-07-05T07:09:22.797 回答
1

是的,您可以通过覆盖 changeSelection 函数来选择多行而不使用键盘,如下所示:

@Override
        public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend) {
            latestClickedRowIndex = rowIndex;
            ListSelectionModel selectionModel = getSelectionModel();
            boolean selected = selectionModel.isSelectedIndex(rowIndex);
            //throw new UnsupportedOperationException("Paila.");
            if (selected) {
                selectionModel.removeSelectionInterval(rowIndex, rowIndex);
                getValueAt(rowIndex, columnIndex);
            } else {
                selectionModel.addSelectionInterval(rowIndex, rowIndex);
            }
        }
于 2013-03-04T20:05:05.757 回答
0

我终于使用了这段代码:

JTable table = new JTable(){
    @Override
    public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend) {
        super.changeSelection(rowIndex, columnIndex, true, extend);
    }
};

这样 CTRL(toogle) 总是被推送(true)。

于 2017-06-08T08:48:15.363 回答