【问题标题】:Do something when the close button is clicked on a JFrame (need clarification)在 JFrame 上单击关闭按钮时执行某些操作(需要澄清)
【发布时间】:2016-12-24 17:33:48
【问题描述】:

我正在寻找对一个老问题的答案的澄清:Do something when the close button is clicked on a JFrame

在回答中,Ravindra Gullapalli 建议使用以下代码:

import javax.swing.JOptionPane;
/*Some piece of code*/
frame.addWindowListener(new java.awt.event.WindowAdapter() {
    @Override
    public void windowClosing(java.awt.event.WindowEvent windowEvent) {
        if (JOptionPane.showConfirmDialog(frame, 
            "Are you sure to close this window?", "Really Closing?", 
            JOptionPane.YES_NO_OPTION,
            JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION){
            System.exit(0);
        }
    }
});

首先,这是在 Netbeans 中执行此操作的正确方法吗?

其次,什么是“框架”? (答案中第3行代码的第一个单词以及showConfirmDialog的第一个参数)。根据 swing API,这应该是 Component 类型。但是,当我用我的 JFrame 的 Title 属性替换它时,我仍然得到 “找不到符号”错误。组件名称是否与 JFrame 标题不同,如果是,我在哪里可以找到它?在 NetBeans Navigator 中,它只显示 [JFrame] 并且不显示组件名称,这与在类型旁边显示和可编辑的组件名称的所有其他 Form 对象不同。

【问题讨论】:

    标签: java swing netbeans jframe


    【解决方案1】:

    "frame" 被简单地假定为未显示代码中的 JFrame 的变量名。如果您的程序有一个名为“frame”的 JFrame 或其他顶级窗口,并且它在该代码行的范围内,那么您就在做生意。否则,您将不得不使用您当前正在使用的变量名。这是避免“借用”代码的另一个原因。而是学习概念,借鉴想法,并使用两者来编写自己的代码。


    关于:

    组件名称是否与 JFrame 标题不同,如果是,我在哪里可以找到它?

    不知道你在这里的意思。同样在答案中的代码中,框架是变量的名称,而不是“组件名称”或“标题”。这涉及到 Java 101 的概念——变量名和变量范围,与 Swing 或 NetBeans 无关。


    关于:

    这是 NetBeans 的正确方法吗?

    如果这是您想要实现的行为。

    【讨论】:

    【解决方案2】:

    其次,什么是“框架”?

    对包含您刚刚单击的关闭按钮的框架的引用。

    但是,当我将其替换为 JFrame 的 Title 属性时

    不确定为什么要使用“Title”属性。那只是一个字符串。您无法打开/关闭字符串。

    首先,这是在 Netbeans 中执行此操作的正确方法吗?

    WindowListener 中代码的更好结构可能是:

    JFrame frame = (JFrame)windowEvent.getSource();
    

    那么你不必担心在你的类中定义一个变量。

    你也可以使用:

    frame.dispose();
    

    而不是 System.exit()。如果这是最后一个打开的窗口,JVM 将关闭。

    【讨论】:

    • 谢谢,但我不知道你所说的 WindowListener 是什么意思(也许这在 Netbeans 之外更相关,我尝试查看它并发现:stackoverflow.com/questions/23393107/…
    • I do not know what you mean by the WindowListener - 什么?您正在使用addWindowListener(...) 方法。如果您不知道WindowListener 是什么,为什么还要使用这种方法?我建议您阅读 How to Write a WindowListener 上的 Swing 教程中的部分,以获取基本信息和示例。保持链接方便所有 Swing 基础知识。
    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    相关资源
    最近更新 更多