JTable和removeAll行为

时间:2013-08-11 17:13:31

标签: java swing jtable defaulttablemodel removeall

我已经阅读了removeAll()方法的javadoc,但我不太清楚会发生什么。我需要删除myJtable中包含的所有数据,并添加新数据。 removeAll只会删除表中的数据吗?

这就是我宣布我的jtable的方式:

JTable table = new JTable(new DefaultTableModel(info, myHeader)) {
        @Override
        public boolean isCellEditable(int row, int column) {
            //disable table editing
            return false;
        }
    };
    header = table.getTableHeader();
    header.setBackground(Color.GREEN);
    JScrollPane scroll_pane = new JScrollPane(table);
    //hide column
    table.removeColumn(table.getColumnModel().getColumn(1));
    //scrollbar insert
    table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
    //disable dragging and resizing column
    table.getTableHeader().setReorderingAllowed(false);
    table.getTableHeader().setResizingAllowed(false);
    table.addMouseListener(new JTableRowListener(table));

其中JTable构造函数的args是String数组

1 个答案:

答案 0 :(得分:3)

您想要更改JTable的模型,而不是调用removeAll()。请注意,如果你转到JTable API,你会发现removeAll()方法不是特定于JTable的方法,而是与JTable父母之一Container相关的方法。该方法不执行“JTable特定”操作,而是删除容器所持有的所有组件,例如JPanel中保存的组件。

要清空JTable,您需要执行以下操作之一:

  • 删除JTable当前模型所拥有的所有数据
  • 或将当前模型的行数设置为0
  • 或通过其setModel(...)方法将JTable的模型更改为新的(空)模型

您的解决方案的具体细节取决于您当前代码的具体情况,您如何设置JTable及其模型等。有关详细信息,您需要向我们展示您的相关代码(最好是{{ 3}})并向我们提供有关您的程序及其数据的更多信息,以及您可能在代码中遇到的当前问题的详细信息。

有关详情,请查看SSCCE


修改

您已经在JTable tutorial中获得了与之前JTable问题相同的JTable教程链接。也许是时候考虑学习这个教程了。