我正在制作扫雷,使用actionPerformed
方法(我知道如何使用它),我想重置游戏,制作一个全新的游戏JFrame
并关闭游戏旧的。 (地图在JuegoBuca()
中由另一个类的对象生成)。游戏已经开始了。我也知道如何使用JMenu
,JMenuBar
和JMenuItem
。
我的“主要课程”的代码,一切都在那里发生。
public class JuegoBuca extends JFrame implements MouseListener, ActionListener {
private JPanel buca, norte;
private Botones[][] botones;
private Datos[][] datos;
private Mapa panel;
private int numerominas, banderas, minasdescubiertas, clicks, caso;
private JMenuBar barraMenu;
private JMenu juego;
private JMenuItem nuevo, opciones, salir;
private ImageIcon bandera, bombStar, bombCross, bombHelp, bomb;
private boolean estado, juegonuevo;
private JuegoBuca() {
setVisible(true);
setSize(250, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Buscaminas");
setResizable(false);
//Partes del juego
panel = new Mapa();
botones = new Botones[5][5];
datos = new Datos[5][5];
buca = new JPanel(new GridLayout(5, 5));
norte = new JPanel();
//Variables de información
banderas = clicks = caso = 0;
int n = panel.getNumerominas();
numerominas = n;
minasdescubiertas = 0;
estado = juegonuevo = false;
//Barra menu y opciones menu
barraMenu = new JMenuBar();
juego = new JMenu("Juego");
//////////////// Jerarquía
salir = new JMenuItem("Salir");
salir.addActionListener(this);
nuevo = new JMenuItem("Nuevo");
nuevo.addActionListener(this);
opciones = new JMenuItem("Opciones");
opciones.addActionListener(this);
//////////////////////////////////Imagenes
bandera = new ImageIcon(getClass().getResource("bandera.png"));
bombStar = new ImageIcon(getClass().getResource("bomb_star.png"));
bombCross = new ImageIcon(getClass().getResource("bomb_cross.png"));
bombHelp = new ImageIcon(getClass().getResource("bomb_help.png"));
bomb = new ImageIcon(getClass().getResource("bomb.png"));
barraMenu.add(juego);
juego.add(nuevo);
juego.add(opciones);
juego.addSeparator();
juego.add(salir);
setJMenuBar(barraMenu);
norte.add(new JLabel("Clicks " + clicks + " Minas: " + numerominas));
int index = 1;
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
buca.add(botones[i][j] = new Botones());
botones[i][j].addMouseListener(this);
botones[i][j].setIndice1(index);
botones[i][j].setIcon(null);
datos[i][j] = new Datos();
if (panel.obtenerValorPanel(i, j) == 0) {
datos[i][j].ponerLabel(" ");
} else if (panel.obtenerValorPanel(i, j) == 64) {
datos[i][j].setIcon(bombStar);
} else {
datos[i][j].ponerLabel(Integer.toString(panel.obtenerValorPanel(i, j)));
}
index++;
}
}
add(buca, BorderLayout.CENTER);
add(norte, BorderLayout.NORTH);
actualizar();
}
public static void main(String args[]) {
JuegoBuca juego = new JuegoBuca();
}
private void actualizar() {...}
@Override
public void mouseClicked(MouseEvent e) {...}
@Override
public void mousePressed(MouseEvent e) {...}
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
if (o == salir) {
System.exit(0);
} else if(o == nuevo) {
//RESET GAME...
}
}
@Override
public void mouseReleased(MouseEvent e) {...}
@Override
public void mouseEntered(MouseEvent e) {...}
@Override
public void mouseExited(MouseEvent e) {...}
public void indicadores(Object o) {...}
public void logicaJuego(Object o) {...}
public void dibuja() {...}
public int minasdesc() {...}
public boolean Jugar() {...}
}
如果有人需要更多信息,请告诉我。 谢谢。
答案 0 :(得分:3)
尝试下一步:
JuegoBuca.this.setVisible(false);
JuegoBuca.this.dispose();
new JuegoBuca();
在你的:
if(o == nuevo) {
//RESET GAME...
}
但我建议您清除所有资源并重复使用现有框架。
答案 1 :(得分:2)
调用dispose()
方法,然后再次调用main()
方法。如果要在单击任何按钮时执行此操作,请在actionPerformed()