JTable多重选择,不使用键盘仅使用鼠标

时间:2012-07-05 06:51:47

标签: java swing jtable

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

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

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

除此之外还有什么东西,Java只使用鼠标而不使用键盘提供多种选择?

4 个答案:

答案 0 :(得分:2)

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

编辑:但如果您不想使用键盘,我认为可以尝试:

Select Multiple Items In JList Without Using The Ctrl/Command Key

答案 1 :(得分:2)

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

答案 2 :(得分: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);
            }
        }

答案 3 :(得分: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)。