剛開始使用GUI時,由於某種原因,當我設置默認的關閉操作時,它無法正常工作,而且在添加JLabel和TextField等組件時也是如此。我已經使用JFrame擴展了我的類,並且我的程序中沒有其他具有相同名稱的JFrame或JPanel。哦,還有,setVisible和setSize仍然可以工作,只是在添加組件或設置關閉操作時。這裏是調用包含makeWindow()調用的方法的類。setDefaultCloseOperation not working
public static class Play implements ActionListener{
public void actionPerformed(ActionEvent e){
frame.setVisible(false);
game.playGame();
}
這裏是實際的方法:
private void makeWindow() {
JFrame window = new JFrame("Battleships 2.0");
JPanel canvas = new JPanel();
JLabel title = new JLabel("Battleships 2.0");
title.setFont(font);
JTextField userCoordinates = new JTextField();
window.setSize(500,500);
window.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
window.setResizable(false);
window.setVisible(true);
canvas.setLayout(new BoxLayout(canvas, BoxLayout.Y_AXIS));
window.add(canvas);
canvas.add(title);
canvas.add(userCoordinates);
}
嘗試使用'window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);' – Hackerdarshi
「我已經擴展我的類JFrame的」 ......在'JFrame的窗口=新的JFrame( 「戰艦2.0」); '你創建了一個普通的'JFrame',「你的班級」在哪裏? –
如果你已經用JFrame擴展了你的類,那你爲什麼要創建另一個JFrame('window')?只要對其本身採取行動。順便說一句,那是一個壞習慣。 – Hackerdarshi