访问Java中的jtable行时出现线程错误

时间:2016-03-14 08:59:33

标签: java multithreading swing

我收到控制台错误 - 无法访问行值

  

MDIWindow.frames.VolumeCharting_Calc $ Save.updateRow(VolumeCharting_Calc.java:497)   MDIWindow.frames.VolumeCharting_Calc $ Save.run(VolumeCharting_Calc.java:363)   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:615)   java.lang.Thread.run(Thread.java:745)

我的代码

sumTotal += resp.getVolume();
long numb = Long.parseLong((String) jTable2.getValueAt(rowToUpdate, 6)); // ERROR LINE
double totalPerc = ((double) numb / sumTotal) * 100;

为什么我在这里收到错误 - 除此之外我还有类似的代码来获取价值......在此代码之前也是如此。

1 个答案:

答案 0 :(得分:0)

将您怀疑的代码放入UI线程中,看看会发生什么,

 SwingUtilities.invokeAndWait(new Runnable() {                  
                        @Override
                        public void run() {
                             sumTotal += resp.getVolume();
                             long numb = Long.parseLong((String)  jTable2.getValueAt(rowToUpdate, 6)); // ERROR LINE
                             double totalPerc = ((double) numb / sumTotal) * 100;
                        }
 });