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

时间:2015-08-21 15:06:41

标签: java jtable

我有JComboBox来选择Designation。我有JTable它的列是EmpId,名称,状态,开始时间,结束时间。当我选择指定“职员” JTable应该只显示EmpId,Name,Status如果我选择指定为“Laborer”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

这里的错误是什么

并且当我选择“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        

1 个答案:

答案 0 :(得分:0)

一旦你从数组中间remove对象,就会删除呈现此列的TableColumn,因此保存所有列的当前数组将为" PRIOR size -1",所以右边的那个(最后一个)将向左移动,你"结束时间"位置现在在" 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);
    }
}