我写的一个连连看的游戏
以前一直运行正常
现在在我的机器重装后突然出现这个问题:
一个菜单项和游戏画面上的一个按钮都是用来提示功能的
而菜单项的提示功能就正常
但是按钮的提示功能就出现,高亮显示表示能连的两块只有一块高亮显示,另一块不动!
代码是一摸一样的啊!!还有,同样是菜单项和按钮,菜单项按了出来的提示筐就显示正常,而按钮按了显示的提示筐就只能显示头部!代码也是一样的!!而我把程序在别人机器上运行就是好的!怎么会这样啊!!JRE装的毛病??有没有办法在按钮相应代码里触发菜单项事件呢?

解决方案 »

  1.   

    菜单项的相应事件代码放在了
    public boolean handleEvent (Event e) 里
    按钮的在
    public void actionPerformed(ActionEvent e)  里
      

  2.   

    public boolean handleEvent (Event e)
    else if (e.arg.equals(tipMI.getLabel()))   //tip or hint
    {
    if(gameMap.Search(point[0],point[1],point[4],point[5])) //There is a way
    {
    System.out.println("handleEvent line:1067!!!!!!!");
    if (tipNum>0)
    {
         tipNum--;
        remove(tipNumLabel);
        tipNumLabel=new Label(""+tipNum);
             tipNumLabel.setFont(font);
             tipNumLabel.setForeground((Color.green));
            setLayout(null);
            add(tipNumLabel);
             tipNumLabel.reshape(585,50,35,35);
             paintMap=false;     
        tipDisplay=true;
        updateMap=false;
        repaint();
        }
    }
    else  //There is no way left ,auto shuffle
    {
    // System.out.println("Now Shuffle!! life-1");
    lifeNum--;
    if (lifeNum<0)
    {
    try
    {
    gameoverMusic=new FileInputStream
    (pathStr+"audio/gameover.aif");
    player=new JavaSoundAudioClip(gameoverMusic);
    player.play();
    }
    catch (IOException e1)
    {}
    gameover();
    }
    remove(lifeNumLabel);
    lifeNumLabel=new Label(""+lifeNum);
    lifeNumLabel.setFont(font);
    lifeNumLabel.setForeground((Color.green));
    setLayout(null);
    add(lifeNumLabel);
    lifeNumLabel.reshape(585,105,35,26);
    paintMap=false;
         updateMap=true;
         gameMap.Shuffle();
    repaint();
    }
      

  3.   

    public void actionPerformed(ActionEvent e)
    if (e.getSource()==tipButton) 
    {
    if(gameMap.Search(point[0],point[1],point[4],point[5])) //There is a way
    {
    if (tipNum>0)
    {
        tipNum--;
    remove(tipNumLabel);
    tipNumLabel=new Label(""+tipNum);
            tipNumLabel.setFont(font);
            tipNumLabel.setForeground((Color.green));
            setLayout(null);
            add(tipNumLabel);
            tipNumLabel.reshape(585,50,35,35);
            paintMap=false;     
    tipDisplay=true;
    updateMap=false;
    repaint();
    }
    }
    else  //There is no way left ,auto shuffle
    {
    lifeNum--;
    if (lifeNum<0)
    {
    try
    {
    gameoverMusic=new FileInputStream(pathStr+"audio/gameover.aif");
    player=new JavaSoundAudioClip(gameoverMusic);
    player.play();
    }
    catch (IOException e1)
    {}
    gameover();
    }
    remove(lifeNumLabel);
    lifeNumLabel=new Label(""+lifeNum);
    lifeNumLabel.setFont(font);
    lifeNumLabel.setForeground((Color.green));
    setLayout(null);
    add(lifeNumLabel);
    lifeNumLabel.reshape(585,105,35,26);
    paintMap=false;
        updateMap=true;
        gameMap.Shuffle();
    repaint();
    }
    }