I want to modify my JTable using a Thread, but sometimes I obtaining java.lang.ArrayIndexOutOfBoundsException...
Here my code
//... Ini Declaration
javax.swing.JTable theJfTable = new javax.swing.JTable();
theJfTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Freqs", "Real", "Imag", "Mod", "Angle"
}
));
//... End Declaration
I'm creating a thread because the process take a long long time!!! I want to avoid my programm get freezed then I will use a Thread...
Runnable fillData = new Runnable() {
public void run() {
double[] bins = ... // DoubleArrayWithSizeF;
double[] Real = ... // DoubleArrayWithSizeF;
double[] Imag = ... // DoubleArrayWithSizeF;
double[] Mod = ... // DoubleArrayWithSizeF;
double[] Arg = ... // DoubleArrayWithSizeF;
int iSizeF = bins.length;
((DefaultTableModel) theJfTable.getModel()).setRowCount(0);
for (int i = 0; i < iSizeF; i++) {
((DefaultTableModel) theJfTable.getModel()).addRow(new Object[]{ // Line 9208 Problem Here!!!!
String.format("%.2f", bins[i]),
String.format("%.2f", Real[i]),
String.format("%.2f", Imag[i]),
String.format("%.2f", Mod[i]),
String.format("%.2f", Arg[i])
});
}
}
};
new Thread(fillData).start();
The Exception!!!
at java.util.Vector.elementAt(Vector.java:474)
at javax.swing.table.DefaultTableModel.justifyRows(DefaultTableModel.java:265)
at javax.swing.table.DefaultTableModel.insertRow(DefaultTableModel.java:375)
at javax.swing.table.DefaultTableModel.addRow(DefaultTableModel.java:350)
at javax.swing.table.DefaultTableModel.addRow(DefaultTableModel.java:361)
at JA_JF_BinFileNumbers.JF_BinFileAndNumbers$80.run(JF_BinFileAndNumbers.java:9208)
at java.lang.Thread.run(Thread.java:745)
I want to avoid the error... I was thinking to use a Try Catch but my results will be not secure!!!
PD: Populate JTable with large number of rows
Using SwingWorker is not the only answer...