我试图在点击任何一个难度按钮后处理难度窗口,但不会发生。我试过.dispose
和frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
,但我无法理解。它只是放置还是更多?
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);
}
}
答案 0 :(得分:5)
首先,您正在扩展JFrame并创建JFrame的对象,如果我没有错,那么就不应该这样做。
public class Game extends JFrame{
public static JFrame frame = new JFrame();
正如@Salah所说,JFrame不是静态的,所以它应该是:
public JFrame frame = new JFrame();
要解决您的问题,您需要处置新的JFrame(是的,您在一个类中有3个JFrame,而不是1,这是您想要的),如果您已经创建了JFrame.dispose();
一个对象或您正在扩展JFrame,您可以:
this.dispose(); //For the extended JFrame
或
frame.dispose(); //For the object you created
答案 1 :(得分:3)
dispose()
方法不是静态的,因此直接从JFrame
类
JFrame.dispose();
尝试做:
dispose();
或者处置您创建的frame
对象
frame.dispose();
详细了解JFrame
答案 2 :(得分:0)
在处理之前尝试将jFrame设置为不可见:
public void disposeJFrame(JFrame frame){
frame.setVisible(false);
frame.dispose();
}
答案 3 :(得分:0)
我遇到了同样的问题:
this.dispose();
解决了我的问题。
答案 4 :(得分:-1)
如果您想要关闭整个程序,可以使用System.exit(0);
答案 5 :(得分:-1)
取而代之的是JFrame.dispose();
,请使用frame.dispose()
或JFrame.this.dispose();