2013-11-03 3 views
1

나는 모든 GUI 물건과 함께 신입생 그리고 난 내 코드에서 "정적"와 모든 JFrames를 선언해야합니다 (그렇지 않으면 늘 컴파일) 내가 선언하지 않고 컴파일하려면 코드를 수정하는 방법 할 이유를 알고 싶어 그들 "정적"? 당신의 public static void Inicio()가 정적 becuase어떻게 이러한 정적 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);    
    } 

답변

1

그것은이다. 당신은 static 방법

여기 JFrame를 사용하는 일반적인 방법이다에서 비 정적 속성을 호출 할 수 없습니다. JFrame 용 생성자를 만들고 내부에 모든 구성 요소를 추가합니다. 그런 다음 바로 main 방법

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); 
    } 
} 

에 당신이 당신의 경우와 같이 정적 속성이 필요하지 않습니다이 방법을 JFrame의 개체를 만듭니다.