JProgressBar อัปเดตพฤติกรรมของค่า (เธรด)

ดูเหมือนจะไม่เข้าใจว่าทำไมเมื่อทำงานกับค่าบางอย่าง JProgressBar จะหยุดนิ่งและหยุดการคำนวณ ตัวอย่างเช่นโค้ดด้านล่างจะแสดงเฉพาะศูนย์ตลอดเวลา

     ...
       int value = (100/maxGenerations)*i;       //maxGenerations = 2500
       final int barValue = value;
       SwingUtilities.invokeLater(new Runnable() {
          public void run() {
          progressBar.setValue(barValue);
        }
     });

แต่ถ้าใช้แบบเดียวกันฉันก็ทำสิ่งต่อไปนี้ได้ (แน่นอนว่าไม่ถูกต้องเหมือนกับการคำนวณขยะ):

     ...
       int value = (i/100);         //where 'i' increments until = 2500
       final int barValue = value;
       SwingUtilities.invokeLater(new Runnable() {
          public void run() {
          progressBar.setValue(barValue);
        }
     });

มีความคิดอะไรบ้างว่าทำไม?


person Carlos    schedule 19.03.2011    source แหล่งที่มา
comment
คุณต้องการให้แถบความคืบหน้าอัปเดตทุกๆ 100 การเปลี่ยนแปลงค่าของ i หรือไม่   -  person MeBigFatGuy    schedule 19.03.2011


คำตอบ (1)


หากคุณรู้ว่าช่วงของความคืบหน้าคืออะไร (สมมุติว่า 0 - 2500) คุณสามารถบอก JProgressBar ผ่านทาง progressBar.setMaximum(2500). ด้วยวิธีนี้คุณไม่จำเป็นต้องมีตัวแปร barValue เพียงแค่ให้แถบความคืบหน้าทราบความคืบหน้าจริงของคุณ

person krock    schedule 19.03.2011