java - Swing 常数与组件常数

标签 java swing jlabel

哪个是首选,为什么?

JLabel.RIGHT

SwingConstants.RIGHT



编辑

感谢您的及时回复,虽然我的问题得到了解答,但它提出了另一个问题(与我最初的问题直接相关)。如果其中一个是“首选”,为什么要允许另一个?

JLabel jlabel = new JLabel("JLabel",JLabel.RIGHT);  // my preference

JLabel jlabel = new JLabel("JLabel",SwingConstants.RIGHT);

最佳答案

两者都有效,但是

SwingConstants.RIGHT

是首选。

原因:

  • RIGHTSwingConstants 中声明并继承自 SwingConstants
  • 如果 JLabel 还声明一个名为 RIGHT 的字段,它将隐藏SwingConstants 继承的字段,事情可能会变得疯狂,因为它甚至可能有不同的类型、可见性,当然还有值(value)。

一般来说,最好不要继承类或实现其唯一目的是收集常量的接口(interface)。

但即使这样做,也请始终通过定义它们的类名来引用它们,以避免稍后在将新字段添加到同名子类时引入意外错误。

看这个例子:

class Main implements SwingConstants {
    public static void main(String[] args) {
        System.out.println(RIGHT); // Prints 4
    }
}

还有这个:

class Main implements SwingConstants {
    private static final int RIGHT = 3;
    public static void main(String[] args) {
        System.out.println(RIGHT); // Prints 3
    }
}

我们的字段隐藏 SwingConstants.LEFT,它甚至具有相同的类型int(也可以是不同的类型)。当类型相同时,祝你好运,跟踪由此类隐藏引起的错误,并且不会出现编译时或运行时错误。

关于java - Swing 常数与组件常数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25646790/

相关文章:

java - 为什么没有导入facebook sdk

java - 在标签中显示%

java - 计算器文本显示

java - 使 JLabel 文本向右增长

java - 调用 jframe 中添加的 jpanel

java - 在赋值语句中获取返回类型

java - 我可以使用 JOptionPane.showConfirmDialog 来显示 JInternalFrame 吗?

java - hibernate多对一注释-映射异常

java - 图形抽象方法是如何实现的

java - JPanel 添加到容器时只显示一个组件