我使用包含按钮和文本字段的swings包创建了一个GUI,并且还在按钮上添加了事件处理,这样当单击它时,文本字段应该在循环中连续显示5次消息。
public void actionPerformed(ActionEvent ae){
for(int i=0;i<5;i++){
tx.setText("Running"+i);// here tx is the JTextField object
}
答案 0 :(得分:1)
如果您希望将其显示为动画,则必须在后台或其他线程中进行。
这是一个示例
private Task task;
private void ButtonActionPerformed(java.awt.event.ActionEvent evt)
{
task = new Task();
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
task.execute();
}
class Task extends SwingWorker<Void, Void>
{
@Override
public Void doInBackground() throws Exception
{
for(int i=0;i<5;i++)
{
Lab.setText("Running"+i);
Thread.sleep(200);
}
return null;
}
}
答案 1 :(得分:0)
使用Runnable
并将线程放入其中..
Runnable run = new Runnable() {
@Override
public void run() {
for(int i=0 ; i<5;i++){
try {
Thread.sleep(1000); //time to wait
jTextField_Cost.setText("Running"+i+"");
}catch(InterruptedException e1){
e1.printStackTrace();
}
}
}
};
ExecutorService _ex = Executors.newCachedThreadPool();
_ex.execute(run);
您也可以使用
new Thread(run).start();
但是当我们在程序中使用大量线程时,ExecutorService 很有用..看看this帖子