"jlc488" <jlc488@gmail.com> wrote in message
news:ffb725af-fc16-4bd5-8923-338ac70aeaa3@d27g2000prf.googlegroups.com...
On 11WI25, W801T , "Andrew Thompson" <u32984@uwe> wrote:
hiwa wrote:
let's say....i have a jtextfiled ....
..
Wa, wa, wa, wait! Some of JTextComponent methods are thread safe. Your
original code should run normally as is. Try this:
Good point. OTOH, I think this problem *might* be
better suited to a progress bar (which would require
accounting for the 'update on EDT'). Try doing this
using AWT!
<sscce>
import java.awt.BorderLayout;
import javax.swing.*;
public class SwingProgress {
public static void main(String[] args) throws Exception {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
int num = 1000;
JProgressBar pb = new JProgressBar(0,num);
pb.setStringPainted(true);
frame.getContentPane().add(pb, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
for( int i =0; i<=num; i++){
Thread.sleep(5);
pb.setValue(i);
}
System.out.println("Finished");
}}
</sscce>
--
Andrew Thompsonhttp://www.physci.org/
Message posted via
JavaKB.comhttp://www.javakb.com/Uwe/Forums.aspx/java-setup/200711/1
ok...if i run above codes inside the main function...then it would be
fine....but..the..problem is...
i'm running this...using Jbutton....
when i click the button...this will trigger the job....
so they are like this....
private void btnStartActionPerformed(java.awt.event.ActionEvent evt)
{
this.gogo();
}
private void gogo(){
try{
for (int i = 0; i < 100000; i++) {
this.txtNo.setText(i+""); <-- swing.JTextField
this.txtTest.setText(i+""); <-- this one is awt.TextField
this.progressBar.setValue(i); <-- swing.JprogressBar
System.out.println(i);
}
}catch(Exception e ){}
}
the code is like above..and the class extends JFrame.....
i was using netbean 5.5.1 to desing the UI...and somehow....txtTest
field using awt..only shows the numbers running...and...other..swing
components..are only showing the last number only...i mean like you
said hiwa...if i'm running it inside the main funciton ...
it does not have anyproblem...do you have any idea what's wrong with
this???
thanks guys...
thread--your loop is still blocking the EDT. Andrew's version works because
blocking it until the loop ends. For GUI updates to be visible while they
EDT can keep up the job of updating the screen.