gpt4 book ai didi

java - setDefaultCloseOperation 不起作用

转载 作者:行者123 更新时间:2023-12-01 21:41:15 26 4
gpt4 key购买 nike

刚刚开始使用 GUI,我对这段代码感到非常困惑,由于某种原因,当我设置默认关闭操作时,它不起作用,并且在添加 JLabel 和 TextField 等组件时也是如此。我已经用 JFrame 扩展了我的类,并且我的程序中没有其他同名的 JFrame 或 JPanel。哦,还有,setVisible 和 setSize 仍然有效,只是在添加组件或设置关闭操作时有效。下面是调用包含 makeWindow() 调用的方法的类。

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

最佳答案

如果你在你的类中扩展了JFrame,那么你不需要在你的方法中再次创建JFrame对象。你已经使用了BOXLayout,所以你的文本字段占据了整个面板,标 checkout 现在顶部。我刚刚修改了您的代码以使用 FlowLayout 并且控件清晰可见。检查一下:

private void makeWindow() {
// JFrame window = new JFrame("Battleships 2.0");
setTitle("Battleships 2.0");
JPanel canvas = new JPanel();

JLabel title = new JLabel("Battleships 2.0");
// title.setFont(font);

JTextField userCoordinates = new JTextField(10);

setSize(500, 500);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setResizable(false);
setVisible(true);

canvas.setLayout(new FlowLayout());

add(canvas);
canvas.add(title);
canvas.add(userCoordinates);
}

关于java - setDefaultCloseOperation 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36425294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com