方法一、
public void Judgmentac()
{
   if(Nplayscore>21) 
   {                
      javax.swing.JOptionPane.showMessageDialog(null,"你输了,再接再厉吧!","提 示",javax.swing.JOptionPane.WARNING_MESSAGE );      new run().Judge();  
   }
}
方法二、
public void  Judge()
{
    
    pic=1;                                          //  (1)
    pic1.setIcon(new javax.swing.ImageIcon());      //  (2)
}    运行程序,我点击按钮然后调用方法一,再通过方法一调用方法二,为什么方法二中的(1)执行了,而(2)没有执行(或者说没有把原来的是显示图片的重置为空!).
    在线等啊!很急,知道的兄弟、姐妹、大哥大姐们告诉我怎么解决啊!!!!!

解决方案 »

  1.   

    run()是什么? 调用 Judge() 直接些 Judge();就行了 , 不用 new run().Judge(); new 是用来生成对象的,
      

  2.   

        直接些 Judge()还是不行。
        我用的是netbeans编辑的。
        我把 pic1.setIcon(new javax.swing.ImageIcon());  放在事件里面就能执行,放在方法里面就不触发了。目的是把原来的图片清空处理。
      

  3.   

    你用线程将界面更新代码移出了事件线程。需要使用SwingInvokeLater重新将界面更新语句返回到事件派发线程中。
    (1)将界面更新语句编发到线程中
       Runnable setIcon=new Runnable(){
       public void run(){
        pic1.setIcon(new javax.swing.ImageIcon());  
        }
       };
    (2)将更新语句派发到事件线程
        try{
          SwingUtilities.invokeLater(setIcon);
        }catch(Exception ex){}
    详细解释可以参照:http://www.blogjava.net/Swing/archive/2007/07/10/129338.html