//灰常低级的打地鼠游戏
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.lang.*;
import java.awt.Button;
import java.lang.Thread;
//------------------------------------------------------------------------------------------------class gide extends JFrame implements ActionListener{
boolean flag;
JMenuItem startitem,pauseitem,aboutitem,closeitem;
JMenu filemenu,systemmenu;
JMenuBar mbar;
JButton[] jb=new JButton[9];
JTextField jt1,jt2; gide()
{
super("打地鼠o(∩_∩)o");
startitem=new JMenuItem("开始");
startitem.addActionListener(this);

pauseitem=new JMenuItem("暂停");
pauseitem.addActionListener(this);

aboutitem=new JMenuItem("关于");
aboutitem.addActionListener(this);

closeitem=new JMenuItem("关闭");
closeitem.addActionListener(this);

filemenu=new JMenu("文件");
systemmenu=new JMenu("系统");

filemenu.add(startitem);
filemenu.add(pauseitem);

systemmenu.add(aboutitem);
systemmenu.add(closeitem);

mbar=new JMenuBar();

mbar.add(filemenu);
mbar.add(systemmenu);

this.setJMenuBar(mbar);

jt1=new JTextField("0");
jt1.setBounds(0,0,60,40);

jt2=new JTextField("0");
jt2.setBounds(60,0,60,40);

jb[0]=new JButton("");
jb[0].setBounds(0,50,70,30);

jb[1]=new JButton("");
jb[1].setBounds(80,50,70,30);

jb[2]=new JButton("");
jb[2].setBounds(160,50,70,30);

jb[3]=new JButton("");
jb[3].setBounds(0,90,70,30);

jb[4]=new JButton("");
jb[4].setBounds(80,90,70,30);

jb[5]=new JButton("");
jb[5].setBounds(160,90,70,30);

jb[6]=new JButton("");
jb[6].setBounds(0,130,70,30);

jb[7]=new JButton("");
jb[7].setBounds(80,130,70,30);

jb[8]=new JButton("");
jb[8].setBounds(160,130,70,30);

Container wcontainer=this.getContentPane();

wcontainer.setLayout(null);

wcontainer.add(jb[1]);
wcontainer.add(jb[2]);
wcontainer.add(jb[3]);
wcontainer.add(jb[4]);
wcontainer.add(jb[5]);
wcontainer.add(jb[6]);
wcontainer.add(jb[7]);
wcontainer.add(jb[8]);
wcontainer.add(jb[0]);
wcontainer.add(jt1);
wcontainer.add(jt2);

this.setSize(240,220);
this.setVisible(true);

}
public static void main(String[] args)
{
gide test1=new gide();
}public void actionPerformed(ActionEvent e)
 {
  int timer=0,i,scr;
//----------------------------------------------------------------------------------------
if(e.getSource()==startitem)
{

while(timer!=60)
{
i=(int)(Math.random()*8);
timer=timer+1;
jb[i].addActionListener(this);jb[i].setLabel("mouce");
try
             {
               this.wait(500);
                } 
              catch(InterruptedException e2)
              {
               
              }

jb[i].removeActionListener(this);jb[i].setLabel("");



try
             {
               this.wait(500);
                } 
              catch(InterruptedException e2)
              {
               
              }
             
jt2.setText(String.valueOf(timer));
}
JOptionPane.showMessageDialog(this,"you get the score:"+jt1.getText(),"the score got",1);
}
//-------------------------------------------------------------------------------------------------
if(e.getSource()==pauseitem){      try{this.wait(9999999);}  catch(InterruptedException e2){}           }
if(e.getSource()==aboutitem){JOptionPane.showMessageDialog(this,"yuge product","Message about the product",1);}
if(e.getSource()==closeitem){System.exit(0);}


if(e.getSource()==jb[0])

scr=Integer.parseInt(jt1.getText())+1;
jt1.setText(String.valueOf(scr));
}
if(e.getSource()==jb[1])

scr=Integer.parseInt(jt1.getText())+1;
jt1.setText(String.valueOf(scr));
}
if(e.getSource()==jb[2])

scr=Integer.parseInt(jt1.getText())+1;
jt1.setText(String.valueOf(scr));
}
if(e.getSource()==jb[3])

scr=Integer.parseInt(jt1.getText())+1;
jt1.setText(String.valueOf(scr));
}
if(e.getSource()==jb[4])

scr=Integer.parseInt(jt1.getText())+1;
jt1.setText(String.valueOf(scr));
}
if(e.getSource()==jb[5])

scr=Integer.parseInt(jt1.getText())+1;
jt1.setText(String.valueOf(scr));
}
if(e.getSource()==jb[6])

scr=Integer.parseInt(jt1.getText())+1;
jt1.setText(String.valueOf(scr));
}
if(e.getSource()==jb[7])

scr=Integer.parseInt(jt1.getText())+1;
jt1.setText(String.valueOf(scr));
}
if(e.getSource()==jb[8])

scr=Integer.parseInt(jt1.getText())+1;
jt1.setText(String.valueOf(scr));
}

 }
}

解决方案 »

  1.   

    try {
    this.wait(500);
    } catch (InterruptedException e2) { } jb[i].removeActionListener(this);
    jb[i].setLabel(""); try {
    this.wait(500);
    } catch (InterruptedException e2) { }
    把这段注掉就能正确运行了
      

  2.   

    这代码是用来等待0.5S的,如果注释掉,按钮不就会加入监听后马上被撤销监听啦?那是否有可以让它等待0.5S(期间继续监听)的调用呢?Timer不会用!恳请大侠指点
      

  3.   

    这代码是用来等待0.5S的,如果注释掉,按钮不就会加入监听后马上被撤销监听啦?那是否有可以让它等待0.5S(期间继续监听)的调用呢?Timer不会用!恳请大侠指点
      

  4.   

    wait 之后好像是不是需要其他线程来唤醒啊!
      

  5.   

    我是 菜鸟。在你基础上最少的修改  添加了多线程。望采纳//灰常低级的打地鼠游戏
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.lang.*;
    import java.awt.Button;
    import java.lang.Thread;
    //------------------------------------------------------------------------------------------------class gide extends JFrame implements ActionListener{
    boolean flag;
    JMenuItem startitem,pauseitem,aboutitem,closeitem;
    JMenu filemenu,systemmenu;
    JMenuBar mbar;
    JButton[] jb=new JButton[9];
    JTextField jt1,jt2;gide()
    {
    super("打地鼠o(∩_∩)o");
    startitem=new JMenuItem("开始");
    startitem.addActionListener(this);pauseitem=new JMenuItem("暂停");
    pauseitem.addActionListener(this);aboutitem=new JMenuItem("关于");
    aboutitem.addActionListener(this);closeitem=new JMenuItem("关闭");
    closeitem.addActionListener(this);filemenu=new JMenu("文件");
    systemmenu=new JMenu("系统");filemenu.add(startitem);
    filemenu.add(pauseitem);systemmenu.add(aboutitem);
    systemmenu.add(closeitem);mbar=new JMenuBar();mbar.add(filemenu);
    mbar.add(systemmenu);this.setJMenuBar(mbar);jt1=new JTextField("0");
    jt1.setBounds(0,0,60,40);jt2=new JTextField("0");
    jt2.setBounds(60,0,60,40);jb[0]=new JButton("");jb[0].setBounds(0,50,70,30);jb[1]=new JButton("");
    jb[1].setBounds(80,50,70,30);jb[2]=new JButton("");
    jb[2].setBounds(160,50,70,30);jb[3]=new JButton("");
    jb[3].setBounds(0,90,70,30);jb[4]=new JButton("");
    jb[4].setBounds(80,90,70,30);jb[5]=new JButton("");
    jb[5].setBounds(160,90,70,30);jb[6]=new JButton("");
    jb[6].setBounds(0,130,70,30);jb[7]=new JButton("");
    jb[7].setBounds(80,130,70,30);jb[8]=new JButton("");
    jb[8].setBounds(160,130,70,30);Container wcontainer=this.getContentPane();wcontainer.setLayout(null);wcontainer.add(jb[1]);
    wcontainer.add(jb[2]);
    wcontainer.add(jb[3]);
    wcontainer.add(jb[4]);
    wcontainer.add(jb[5]);
    wcontainer.add(jb[6]);
    wcontainer.add(jb[7]);
    wcontainer.add(jb[8]);
    wcontainer.add(jb[0]);
    wcontainer.add(jt1);
    wcontainer.add(jt2);this.setSize(240,220);
    this.setVisible(true);}
    public static void main(String[] args)
    {
    gide test1=new gide();
    }public void actionPerformed(ActionEvent e)
     {
      int timer=0,i,scr;
    //----------------------------------------------------------------------------------------
    if(e.getSource()==startitem)
    {
    new MyThread(this).start();}
    //-------------------------------------------------------------------------------------------------
    if(e.getSource()==pauseitem){ try{this.wait(9999999);} catch(InterruptedException e2){} }
    if(e.getSource()==aboutitem){JOptionPane.showMessageDialog(this,"yuge product","Message about the product",1);}
    if(e.getSource()==closeitem){System.exit(0);}
    if(e.getSource()==jb[0])
    {  
    scr=Integer.parseInt(jt1.getText())+1;
    jt1.setText(String.valueOf(scr));
    }
    if(e.getSource()==jb[1])
    {  
    scr=Integer.parseInt(jt1.getText())+1;
    jt1.setText(String.valueOf(scr));
    }
    if(e.getSource()==jb[2])
    {  
    scr=Integer.parseInt(jt1.getText())+1;
    jt1.setText(String.valueOf(scr));
    }
    if(e.getSource()==jb[3])
    {  
    scr=Integer.parseInt(jt1.getText())+1;
    jt1.setText(String.valueOf(scr));
    }
    if(e.getSource()==jb[4])
    {  
    scr=Integer.parseInt(jt1.getText())+1;
    jt1.setText(String.valueOf(scr));
    }
    if(e.getSource()==jb[5])
    {  
    scr=Integer.parseInt(jt1.getText())+1;
    jt1.setText(String.valueOf(scr));
    }
    if(e.getSource()==jb[6])
    {  
    scr=Integer.parseInt(jt1.getText())+1;
    jt1.setText(String.valueOf(scr));
    }
    if(e.getSource()==jb[7])
    {  
    scr=Integer.parseInt(jt1.getText())+1;
    jt1.setText(String.valueOf(scr));
    }
    if(e.getSource()==jb[8])
    {  
    scr=Integer.parseInt(jt1.getText())+1;
    jt1.setText(String.valueOf(scr));
    } }
    }
    class MyThread extends Thread
    {
    gide g;
    public MyThread(gide g)
    {
    this.g = g;
    }
    public void run()
    {

    int timer =0;
    while(timer!=60)
    {
    int i=(int)(Math.random()*8);
    timer=timer+1;
    g.jb[i].addActionListener(g);
    g.jb[i].setLabel("mouce");
    try
      {

    Thread.sleep(500);

      
      }
    catch(InterruptedException e2)
      {}

    g.jb[i].removeActionListener(g);
    g.jb[i].setLabel("");
        
    g.jt2.setText(String.valueOf(timer));
    }
    JOptionPane.showMessageDialog(null,"you get the score:"+g.jt1.getText(),"the score got",1); 
    }
    }