从 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);
}
}
我把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);
}
}