java - 为什么是 JFrame.EXIT_ON_CLOSE 与 EXIT_ON_CLOSE?

标签 java swing methods

在我遇到的几乎所有代码示例中,从 JFrame 派生的类中方法 setDefaultCloseOperation 的参数是一些常量,例如 JFrame.EXIT_ON_CLOSE . 在这种情况下,由于EXIT_ON_CLOSEJFrame的常量,所以可以直接访问它,不需要getter方法来访问它。为什么我们仍然在它前面加上父类(super class)名称 JFrame?任何 Swing 类都是 JFrame 的子类,并且会继承 EXIT_ON_CLOSE 常量,所以为什么不直接将方法调用写成 setDefaultCloseOperation(EXIT_ON_CLOSE) 而不是 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

显式父类(super class)名真的有必要吗?

最佳答案

EXIT_ON_CLOSE 是 JFrame 类的静态成员,这意味着它在 JFrame 类的所有实例中都是相同的。

为什么要指定类?

因为如果您在子类中有一个 EXIT_ON_CLOSE 变量怎么办?将改用该变量。因此,要获得静态变量的正确 int 值(在本例中),您必须说明该变量是在哪个类中定义的。

这类似于您在为类的实例寻址类变量时说 this.variable 的原因。在这里,我们只是说类名 JFrame 而不是 this 因为变量在所有实例中都是相同的。

关于java - 为什么是 JFrame.EXIT_ON_CLOSE 与 EXIT_ON_CLOSE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30581175/

相关文章:

java - Scala:更改sbt中的文件夹

java - 是否应该在 EDT 上更新 JUNG 图?

java - 如何使用 NetBeans GUI Builder for Java Swing 添加 GridLayout?

java - 动态更新 swing JXMapKit 中的标记

class - 为什么我不能定义 `delete` 方法?

java - 查找并计算大写字母

java - 当我运行应用程序时,已排序的 ArrayList 未显示为已排序

java - 如何 "proxy"Java中的一个方法

java - Java中为什么可以将方法作为参数添加

javascript - 带有 Spring Boot 的 Thymeleaf 或 Angular 4