如何在JTable中设置可选择的特定列?

时间:2012-12-13 21:42:13

标签: java swing jtable listener listselectionlistener

如何确保我的JTable中只有一些列是可选的(这意味着它们会路由到我的ListSelectionListener)?

我添加了我的听众如下:

table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {...});

1 个答案:

答案 0 :(得分:3)

最简单的解决方案可能是创建自己的选择模型:

table.getColumnModel().setSelectionModel(new DefaultListSelectionModel() {
    private boolean isSelectable(int index0, int index1) {
        // TODO: Decide if this column index is selectable
        return true;
    }

    @Override
    public void setSelectionInterval(int index0, int index1) {
        if(isSelectable(index0, index1)) {
            super.setSelectionInterval(index0, index1);
        }
    }

    @Override
    public void addSelectionInterval(int index0, int index1) {
        if(isSelectable(index0, index1)) {
            super.addSelectionInterval(index0, index1);
        }
    }
});

另请注意,如果要监听列选择,则需要将侦听器添加到列模型的选择模型(而不是表的选择模型)。