gpt4 book ai didi

java - 如何替换这些静态 JFrame 变量?

转载 作者:太空宇宙 更新时间:2023-11-04 07:17:44 25 4
gpt4 key购买 nike

我是所有 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com