【问题标题】:Extending from JFrame从 JFrame 扩展
【发布时间】:2013-07-12 16:22:21
【问题描述】:

延伸到JFramejavax.swing.JFrame有区别吗?

例子:

public class Authenticator extends JFrame {

还有……

public class Authenticator extends javax.swing.JFrame {

【问题讨论】:

  • 不要扩展框架或其他顶级容器。而是创建和使用一个实例。
  • 如果你有另一个类调用JFrame那么你需要识别你想要使用的包
  • @AndrewThompson 为什么?我一直习惯将 GUI 类扩展为 JFrame,这对我来说更容易,但我不知道这被认为是一种不好的做法,为什么它被认为是一种不好的做法?
  • @BackSlash 您是否在需要时扩展JButtonJLabel?有关更多技术原因,请参阅 Jeffrey 的链接。

标签: java swing jframe extend


【解决方案1】:

除非您有另一个名为 JFrame 的类并且正在导入它而不是 javax.swing.JFrame,否则这没有区别。

也就是说,正如 Andrew Thompson 所说,您不应该扩展 JFrame,而应该使用实例。

【讨论】:

    【解决方案2】:

    如果你导入 javax.swing.JFrame; 那么你使用 公共类 Authenticator 扩展 JFrame { 如果没有,那么使用 公共类 Authenticator 扩展 jvax.swing.JFrame {
    但第二种方法主要用于不同包中具有相同名称的类时,以区分类。
    例如
    [-]我的包裹
    |----[-]包装1
    |---TestClass.java
    |----[-]包装2
    |---TestClass.java

    这是我们有一个名为 mypackage 的包和两个子包 pakage1 和 pakage2 的情况

    现在如果我们只导入它会给出这个

    import mypackage.pakage1.TestClass;
    import mypackage.pakage2.TestClass;
    class Testw
    {
    public static void main(String []args)
    {
    System.out.println("Swah!");
    }
    }
    

    会报以下错误

    C:\Program Files\Java\jdk1.6.0_38\bin>javac Testw.java
    Testw.java:2: mypackage.pakage1.TestClass is already defined in a single-type import
    import mypackage.pakage2.TestClass;
    ^
    1 error
    


    那你干什么?
    在这种情况下,您使用第二种方法,也称为完全限定名称 现在您导入一个包并为其他包使用完全限定名称。

    import mypackage.pakage1.TestClass;
    class Testw
    {
    public static void main(String []args)
    {
    TestClass  testclass1 = new TestClass();
    mypackage.pakage2.TestClass  testclass2 = new  mypackage.pakage2.TestClass();
    System.out.println("Swah!");
    }
    }
    

    所以整个事情的总结是当他们的名字冲突时使用完全限定名,我们也可以在他们没有名字冲突时使用这种方法,他们不会对程序产生任何影响

    【讨论】:

      【解决方案3】:

      这取决于您的导入。如果你导入 javax.swing.JFrame,没有。

      【讨论】:

        【解决方案4】:

        无论如何你都必须导入JFrame,它最有可能来自javax.swing包,如果包含多个JFrame类,你只需要写整个包路径,这样编译器就会知道哪一个你想用,所以如果只有一个JFrame类,那么导入就够了,你不用再指定了

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-09-12
          • 2016-02-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多