我是所有 GUI 东西的新手,我想知道为什么我必须在代码中声明所有带有“静态”的 JFrame(否则无法编译)以及如何修改我的代码以进行编译而不声明它们“静态”?
public class Ventana extends JFrame {
private static JFrame frameInicio = new JFrame("Ingresar Datos");
private static JFrame frameCrearUsuario = new JFrame("Crear Usuario");
private static JFrame frameMenu = new JFrame("Menu Del Juego");
private static JFrame frameJuego = new JFrame("El Ahorcado");
public static void main(String[] args) {
Inicio();
}
public static void Inicio(){
frameCrearUsuario.dispose();
frameMenu.dispose();
frameInicio.setSize(450,200);
frameInicio.setLocationRelativeTo(null);
frameInicio.add(new FrameInicio());
frameInicio.setDefaultCloseOperation(EXIT_ON_CLOSE);
frameInicio.setVisible(true);
}
public void CrearUsuario(){
frameInicio.dispose();
frameCrearUsuario.setSize(450,300);
frameCrearUsuario.setLocationRelativeTo(null);
frameCrearUsuario.add(new FrameCrearUsuario());
frameCrearUsuario.setDefaultCloseOperation(EXIT_ON_CLOSE);
frameCrearUsuario.setVisible(true);
}
public void Menu(){
frameInicio.dispose();
frameJuego.dispose();
frameMenu.setSize(660,290);
frameMenu.setLocationRelativeTo(null);
frameMenu.add(new FrameMenu());
frameMenu.setDefaultCloseOperation(EXIT_ON_CLOSE);
frameMenu.setVisible(true);
}
public void Juego(){
frameMenu.dispose();
frameJuego.setSize(1100,800);
frameJuego.setLocationRelativeTo(null);
frameJuego.add(new FrameJuego());
frameJuego.setDefaultCloseOperation(EXIT_ON_CLOSE);
frameJuego.validate();
frameJuego.setVisible(true);
}
最佳答案
这是因为您的 public static void Inicio()
是静态的。您无法从静态
方法调用非静态属性
这是使用JFrame
的常见方法。为 JFrame 创建一个构造函数并在其中添加所有组件。然后只需在 main
方法中创建 JFrame 对象
public class Ventana extends JFrame {
JPanel panel = new JPanel();
JButton button = new JButton("button");
JTextArea jta = new JTextArea();
public Vantan(){
add(panel);
add(button);
add(jta);
}
public static void main(String[] args){
JFrame frame = new Ventana();
frame.setTitle("Frame);
frame.setSize(500, 500);
frame.pack();
frame.setDefaulCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
这样您就不需要像您的情况那样使用静态属性。
关于java - 如何替换这些静态 JFrame 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19748514/