我的程序出了问题。我正在为考试开发Pacman,但是当我将Panel从“菜单”更改为“游戏”面板时,我遇到了麻烦。 正好在主框架中我添加了两个面板:“菜单”面板和“游戏”面板。如果我不添加菜单面板,游戏(最重要的是,听众)可以正常工作;但如果我也添加菜单面板,当我按下“开始游戏”按钮时,菜单的“setVisible”属性将设置为false,新线程将启动。在这种情况下,问题是监听器不起作用。
public static void main(String[] args) {
boolean gameOver = false;
MainFrame mf = new MainFrame(FRAME_WIDTH, FRAME_HEIGHT, TITLE);
// board is a logic map; gb is the graphic map of the game
Board board = new Board();
GraphicBoard gb = new GraphicBoard(mf, board);
gb.setLocation(150, 0);
Background background = new Background(mf.getWidth(), mf.getHeight(), BACKGROUND_COLOR);
background.add(gb);
PacmanThread thread = new PacmanThread(gb, gameOver);
Menu menu = new Menu(mf.getWidth(), mf.getHeight(), thread);
mf.add(menu);
mf.add(background);
mf.setResizable(false);
mf.setVisible(true);
}
在menu.java中有一个子类,所以
public class Menu extends JPanel{
public Menu(int pWidth, int pHeight, PacmanThread pThread) {
this.setLayout(null);
this.setSize(pWidth, pHeight);
this.thread = pThread;
initComponent();
}
private class StartGame implements ActionListener {
private Menu menu;
public StartGame(Menu pMenu) {
this.menu = pMenu;
}
@Override
public void actionPerformed(ActionEvent e) { //<--- is the problem here? what I should add?
menu.setVisible(false);
thread.start();
}
}
}
最后,actionListener存在于名为Pacman.java的类
中