要僅隱藏JTable視圖中的列,我正在使用removeColumn()
方法。但它拋出異常JTable.removeColumn()方法拋出異常
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 7 >= 7
at java.util.Vector.elementAt(Vector.java:470)
at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:294)
at javax.swing.plaf.basic.BasicTableHeaderUI.paint(BasicTableHeaderUI.java:648)
我想,從視圖中刪除列後,如果我修改模型,然後這個異常彈出。是否因爲模型正在更新表格中沒有列,
在JTable中隱藏列的最佳方式是什麼?將尺寸設置爲0的說明
編輯: 例外情況不經常發生。這是一個隨機的例外。無論如何這裏是代碼:
@Override
protected Object doInBackground() throws Exception {
........
resultDTO=//get data from database
tableModel.setDataVector(resultDTO.getAllRows(), tableModel.getColumnNames());
// hide column
table.removeColumn(table.getColumnModel().getColumn(7));
System.out.println("table column count : " + table.getColumnCount());
System.out.println("model column count : " + tableModel.getColumnCount());
........
.........
}
initial result (with out any data in table, at application startup):
table column count : 7
model column count : 8
after populating data (first running of above method):
table column count : 7
model column count : 8
after few times executing :
table column count : 7
model column count : 8
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 7 >= 7
at java.util.Vector.elementAt(Vector.java:470)
at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:294)
at javax.swing.plaf.basic.BasicTableHeaderUI.paint(BasicTableHeaderUI.java:648)
at javax.swing.plaf.synth.SynthTableHeaderUI.paint(SynthTableHeaderUI.java:173)
有些時候上述異常發生時,我第一次加載數據,有時它不是。
我看到異常是從模型中同時嘗試繪畫拋出。模型是否有可能報告說,在刪除一個並將其減少到7之後,總共有8個列?這裏我們沒有太多的信息可以繼續。 – arcy
看起來像是類似於[Bug ID:6586009](http://bugs.sun.com/view_bug.do?bug_id=6586009) – tenorsax
您是否試圖從EDT以外的模型中移除柱子? – MadProgrammer