阻止列在JTable中移除删除

时间:2015-04-21 19:39:06

标签: java swing jtable

我正在尝试实现一个允许用户在JTable中显示/隐藏列的复选框界面,但是当我删除列时,列似乎移动位置并且无法知道100%列的位置是。该表使用以下代码构建:

DefaultTableModel model = new DefaultTableModel();
JTable table            = new JTable(model);
JScrollPane scrollPane  = new JScrollPane(table);

String[] columnNames = {"Artist","Track","Album","Genre","Year","Filetype"};

for (String column : columnNames) {
    model.addColumn(column);
}
table.createDefaultColumnsFromModel();
table.getTableHeader().setReorderingAllowed(false);

这是我实现复选框监听器的代码:

if (e.getSource() == artist) {
    if (!artist.isSelected()) {
        table.removeColumn(table.getColumnModel().getColumn(0));
    } else {
        table.addColumn(table.getColumnModel().getColumn(0));
    }
}
if (e.getSource() == trackName) {
    if (!trackName.isSelected()) {
        table.removeColumn(table.getColumnModel().getColumn(1));
    } else {
        table.addColumn(table.getColumnModel().getColumn(1));
    }
}
/* etc */

1 个答案:

答案 0 :(得分:1)

您可以使用Table Column Manager

它将管理为您隐藏/显示表列。