2014-04-08 4 views
0

어려움 버튼 중 하나를 클릭 한 후에 난이도 창을 처리하려고 시도하지만 발생하지 않습니다. .disposeframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);을 시도했지만 얻을 수 없습니다. 단지 배치 이상입니까?jframe 창을 처리 할 수 ​​없습니까?

import java.awt.FlowLayout; 
import java.awt.event.*; 
import javax.swing.JButton; 
import javax.swing.JDialog; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 
import javax.swing.JTextField; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.GridLayout; 

public class Game extends JFrame{ 

    public static JFrame frame = new JFrame(); 


    private JLabel lab; 

public static void main(String[] args) { 

    Game difficulty = new Game(); 
    difficulty.setSize(350,105); 
    difficulty.setTitle("Difficulty."); 
    difficulty.setVisible(true); 
    difficulty.setLocationRelativeTo(null); 


    /**Game sudoku = new Game(); 
    sudoku.setSize(900, 900); 
    sudoku.setVisible(false);*/ 

} 


public Game(){ 

    setLayout(new FlowLayout()); 
    lab = new JLabel("Please select your difficulty."); 
    add(lab); 

    JButton easy; 
    easy = new JButton("Easy"); 
    add(easy); 

    easy.addActionListener(new ActionListener() { 

      public void actionPerformed(ActionEvent e) 
      { 
       //Execute when button is pressed 
       System.out.println("You clicked the button"); 
       JFrame.dispose(); 
      } 
     }); 


    JButton medium; 
    medium = new JButton("Medium"); 
    add(medium); 

    JButton hard; 
    hard = new JButton("Hard"); 
    add(hard); 

    JButton evil; 
    evil = new JButton("Evil!"); 
    add(evil); 

} 
} 

답변

2

dispose() 방법은 정적이지, 그래서 그것은 할 직접 JFrame 클래스

JFrame.dispose(); 

시도에서 호출에 의해 작동하지 않을 것입니다 :

dispose(); 

또는 frame을 처분 만든 개체

frame.dispose(); 

자세히 알아보기 JFrame

-1

전체 프로그램을 닫으려면 System.exit (0); 그것을 버리기 전에 보이지 않는로 JFrame의 설정

0

시도 : 나는 '경우

public void disposeJFrame(JFrame frame){ 
    frame.setVisible(false); 
    frame.dispose(); 
} 
-1

가 대신 JFrame.dispose();, 당신은 JFrame의 확장 및 JFrame의의 객체를 만드는 모든 frame.dispose() 또는 JFrame.this.dispose();

4

먼저 사용 틀린 것은 아닙니다. 이것은해서는 안됩니다.

public class Game extends JFrame{ 

    public static JFrame frame = new JFrame(); 

그리고 @Salah 말했듯이, JFrame의 정적이 아니므로 그것이 있어야 :

public JFrame frame = new JFrame(); 

네, 하나의 3 JFrames이 (문제, 새로운 JFrame의를 배치하는 것를 해결하기 위해 와,) 당신이 원하는 클래스 대신 1 : 당신은 이미 당신이 JFrame의를 확장하고 또는 개체를 만든 경우 JFrame.dispose(); 다음을 수행 할 수 있습니다

this.dispose(); //For the extended JFrame 

또는

frame.dispose(); //For the object you created