Java 不使用键盘,仅使用鼠标,即可进行多项选择

Java 不使用键盘,仅使用鼠标,即可进行多项选择,java,swing,jtable,Java,Swing,Jtable,这是我的密码。我想在JTable中选择多行,我使用以下行: table.getColumnModel().getSelectionModel().setSelectionMode( javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); 有了上面这一行,我可以使用键盘选择多行,但要求只使用鼠标进行选择 除此之外,Java还提供了只使用鼠标而不使用键盘的多选功能吗 如果您有此代码,只需按住ctrl键并单击“多个” 编辑:但

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

table.getColumnModel().getSelectionModel().setSelectionMode(
    javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
有了上面这一行,我可以使用键盘选择多行,但要求只使用鼠标进行选择


除此之外,Java还提供了只使用鼠标而不使用键盘的多选功能吗

如果您有此代码,只需按住ctrl键并单击“多个”

编辑:但如果您不想使用键盘,我认为这是可能的,请尝试以下方法:


如果您有此代码,只需按ctrl键并单击多个即可

编辑:但如果您不想使用键盘,我认为这是可能的,请尝试以下方法:


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

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

是的,您可以通过覆盖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);
            }
        }

是的,您可以通过覆盖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);
            }
        }

我最终使用了以下代码:

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)。

我最后使用了以下代码:

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).

如何仅用鼠标按ctrl键?如何仅用鼠标按ctrl键?+1,如果他将复选框值绑定到表格模型中的选择模型,他可以使用选择模型。+1,如果他将复选框值绑定到表格模型中的选择模型,他可以使用选择模型。我读错了
提供了多个选项无法直接使用鼠标而不使用键盘进行选择
,因为ListSelectionModel仅为一维,这仅在API中针对JList实现,而JTreeI missread
提供了仅使用鼠标而不使用键盘的多重选择
无法直接进行,因为ListSelectionModel只是一维的,所以它仅在API中为JList和JTree实现