2014-04-08 70 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);

0

嘗試處置之前JFrame中設置爲不可見:

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

相反JFrame.dispose();,使用frame.dispose()JFrame.this.dispose();

4

首先你擴展的JFrame和創建JFrame的對象,如果我米沒有錯,這不應該做。

public class Game extends JFrame{ 

    public static JFrame frame = new JFrame(); 

而作爲@Salah說,JFrame的也不是一成不變的,所以應該是:

public JFrame frame = new JFrame(); 

解決你的問題,你配置一個新的JFrame(是的,你有一個3個JFrames類,而不是1,這是你想要的),有:JFrame.dispose();如果你已經建立或正在擴展JFrame的一個對象,你可以:

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

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