1

JFrame延伸到和有区别javax.swing.JFrame吗?

例子:

public class Authenticator extends JFrame {

和...

public class Authenticator extends javax.swing.JFrame {
4

4 回答 4

6

除非您调用另一个类JFrame并导入它而不是javax.swing.JFrame.

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

于 2013-07-14T20:37:12.133 回答
1

如果你导入javax.swing.JFrame; 然后你使用 public class Authenticator extends JFrame { 如果没有,那么使用 public class Authenticator extends jvax.swing.JFrame {
但是第二种方法主要用于当你在不同的包中有同名的类时,以区分类。
例如
[-]mypackage
 |----[-]pakage1
              |---TestClass.java
 |----[-]pakage2
        |---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!");
}
}

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

于 2013-07-14T21:45:50.843 回答
0

这取决于你的进口。如果您导入 javax.swing.JFrame,则不会。

于 2013-07-14T20:32:14.357 回答
0

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

于 2013-07-14T20:35:42.777 回答