JTextfield循环文本问题

时间:2016-01-28 05:33:11

标签: java swing

我使用包含按钮和文本字段的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
}

2 个答案:

答案 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帖子