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)
上記の例外は、最初にデータをロードしたときに発生する場合もあれば、そうでない場合もあります。