现出现这样一种情况:当按下某按钮后,要求立即使其他的按钮变灰(需要在GUI中获得此效果),但由于此按钮的响应函数执行时间很长,目前是只有在其响应函数执行完时其他按钮才能变灰,而无法实现按下按钮后其他按钮立即变灰,怎么办?也许是个简单的问题,散分50.

解决方案 »

  1.   

    Java Swing的事件处理时单线程的,这是问题的症结所在。
      

  2.   

    响应函数执行时间很长是什么意思?是说要等很长时间才能响应呢,还是说按钮按下后要处理很多的事情呢?如果是情况一的话,可能有点难,如果是情况2的话,你可以先设置按钮颜色,然后再做其它的处理.如
    onclick(){
       设置变灰;
       其它处理;
    }
      

  3.   

    所以,你首先需要掌握线程编程的知识(希望你已经掌握了)。
    然后,你要把事件处理放在一个线程里,也就是说,每一个Swing组件的事件响应,都应该由相应的(线程)类进行监听。
    如果还是不很明白,可以参照Java Applet动画的程序。
      

  4.   

    最后,建议有时间的话,看看《Java Pitfalls》、《More Java Pitfalls》之类的书。
      

  5.   

    onclick(){
    设置变灰;
    其它处理;
    }
      

  6.   

    同意wu_bjcn(咖啡的味道) 的说法,你要把事件处理放在一个线程里,这样的话,就可以实现你想要的效果了
      

  7.   

    同意wu_bjcn(咖啡的味道) 的说法,你要把事件处理放在一个线程里,这样的话,就可以实现你想要的效果了
      

  8.   

    如果置灰事件不需要与SwingGUI线呈同步的话可以创建一个新的线呈,专门处理你说的这个按钮响应的事件处理