public void jButton1_actionPerformed(ActionEvent e) {
        jLabel4.setText("****"); 
        this.repaint();
        this.jLabel4.repaint();
        this.jLabel4.revalidate();
        this.jLabel4.updateUI();    //这些方法都没有用
        try{
           Thread.sleep(3000);
        }catch( Exception ie){
            System.out.println("Wrong....from sleep");
        }
}做了一个按扭,可是运行时死3秒,然后才更新jLabel4,我现在想在sleep前把jLabel4的文本改了,怎么办?谢谢了!

解决方案 »

  1.   

    Thread.sleep(3000)就是让线程沉睡三秒的啊
      

  2.   

    对呀,我希望在SLEEP前更改jLabel.text的值!!
      

  3.   

    可以mousedown 改文本
    mouseup Thread.sleep(3000)
      

  4.   

    可以在 sleep 之前调用刷新吗?
      

  5.   

    setText() 函数本身就会调用刷新代码            revalidate();
                repaint();而repaint()过程是向操作系统发送消息(最终交给本地API来做)你所说的问题根本原因在于——更新事件比线程休眠指令晚到达,从而导致更新滞后
      

  6.   

    这题文本框,我只是一个比喻,其实,在我程序中,是向panel中加一个Label(draw函数), 而sleep也可以用其他的函数(只是为了做延时)
    public void jButton1_actionPerformed(ActionEvent e) {
            draw();
            try{
               Thread.sleep(3000);
            }catch(Exception ie){
                System.out.println("Wrong....from sleep");
            }
    }
    我如何让draw做完以后在Sleep 或者 Wait延时 三秒中? ?
      

  7.   

    难道没有改进的方法,用TIMER改我就要大手术了!麻烦大家帮我想想办法!
      

  8.   

    这是因为你的swing的队列dispatch还没从actionPerformed回来。当然不可能触发其他的更新。你必须再写一个线程用later的触发setText,其他的如repaint之类都不用。