Note that there are some explanatory texts on larger screens.

plurals
  1. POAWT event thread interruption
    primarykey
    data
    text
    <p>I have code:</p> <pre><code>import java.awt.Dimension; import java.util.Observable; import java.util.Observer; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; public class Test2 { JFrame frame = null; JPanel panel = null; JButton button = null; Task task = null; Indicator indicator = null; Runnable computation; public static void main(String[] args) { new Test2().start(); } public void start() { SwingUtilities.invokeLater(new Dialog()); } private void process1() { int result = 0; for (int i=0; i&lt;100000; i++) { result = (int) Math.ceil(++result + Math.sqrt(result)); System.out.println("proc1 " + result); } } private void process2() { int result = 0; for (int i=0; i&lt;100000; i++) { result = (int) Math.ceil(++result + Math.sqrt(result)*500); System.out.println("proc2 " + result); } } private class Computation implements Runnable { public void run() { process1(); task.setProgress(2); process2(); task.setProgress(3); } } private class Dialog implements Runnable { public Dialog() { } public void run() { frame = new JFrame("Test"); panel = new JPanel(); panel.setPreferredSize(new Dimension(300, 200)); frame.getContentPane().add(panel); button = new JButton("b1"); panel.add(button); indicator = new Indicator(); task = new Task(); task.addObserver(indicator); frame.pack(); frame.setVisible(true); computation = new Computation(); SwingUtilities.invokeLater(computation); } } private class Task extends Observable { int progress; public Task() { } public void setProgress(int progress) { this.progress = progress; setChanged(); notifyObservers(); } public int getProgress() { return progress; } } private class Indicator implements Observer { @Override public void update(Observable arg0, Object arg1) { button.setText(((Task)arg0).getProgress()+""); } } } </code></pre> <p>So I have two time-consuming operations (process1 and process2). My aim is after process1 is complete, update swing-button (see task.setProgress method).</p> <p>Problem consists in that update is performed after process1() and process2() are completed.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload