从 Jtable 中删除一列并重新排列它

Remove a column from Jtable and rearrange it

我把JComboBox给select指定了。我有 JTable,它的列是 EmpId、名称、状态、开始时间、结束时间。当我select指定"Clerk" JTable 应该只显示 EmpId、Name、Status 如果我 select 指定为 "Labourer" JTable 应该显示 EmpId、Name、Status、Start Time、End Time 列。我做了,但它给出了一个错误,

jTable1.removeColumn(jTable1.getColumnModel().getColumn(3)); jTable1.removeColumn(jTable1.getColumnModel().getColumn(4));

然后只有 EmpId,Name,Status,End Time 出现并且给出了 arrayoutofboundsexception

这里有什么错误

而且我还需要在我 select 指定 "Clerk" 时再次显示这些列(3 和 4(开始时间、结束时间列)) 所以我使用了这段代码,但它没有提供所需的输出

String desig=cmbAtSelectDesig.getSelectedItem().toString();
if(desig.contentEquals("Clerk")){
 jTable3.addColumn(jTable3.getColumnModel().getColumn(3));
           jTable3.addColumn(jTable3.getColumnModel().getColumn(4));
}
   What is the mistake here Please Give me a solution        

一旦你 remove object from the middle of array, it removes TableColumn 渲染了这一列,因此包含所有列的当前数组将是 "PRIOR size -1",所以右边的那个(最后一个)将移动到左边, 你的 "End Time" 位置现在在 "3 ", 为了避免这个问题, 别想删除两次第 3 列, 不专业又乱, 干脆从数组的末尾开始删除, 4 --- -> 3

已更新:

首先,我以前从未使用过 JTABLE,几乎可以肯定,我所做的对所有 JAVA 社区来说都是一种尴尬,但无论如何...

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;


public class Tester {
    JFrame frane;
    JPanel mainP;
    JTable table;
    public void testIt() {
        frane=new JFrame("testing");
        populateGui();
        frane.setContentPane(mainP);
        frane.pack();
        frane.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frane.setVisible(true);
    }
    private void populateGui() {
        mainP=new JPanel();
        String[] colName={"first col","second","3rd coll"};
        String[][] information={
                    {"DUCK","QUACK","MacDuck"}
                };
        table=new JTable(information, colName);
        table.removeColumn(table.getColumnModel().getColumn(2));
        System.out.println(table.
                getColumnModel().
                    getColumnCount()
        );
        System.out.println(table.
                getModel().
                    getColumnCount()
        );
        table=new JTable(table.getModel());  // yet all the data object that were present in data array () "information" are still there
        /*table.addColumn(
                table.getColumnModel().          there is no column 2 since it was removed from ColumRendere (ColumnModel)
                    getColumn(2));*/
        mainP.add(table);
    }
}