2013-07-14 130 views
1

与扩展到JFramejavax.swing.JFrame有什么不同吗?从JFrame延伸

例子:

public class Authenticator extends JFrame { 

和...

public class Authenticator extends javax.swing.JFrame { 
+5

***请勿延长框架或其他顶层容器。而是创建并使用一个实例。 –

+0

请参阅http://stackoverflow.com/q/1143923/758280 – Jeffrey

+0

如果您有另一个类调用'JFrame',那么您需要识别您想要使用的包 – nachokk

回答

6

指定它这没有什么区别,除非你有一个名为JFrame另一个类,并且不是导入它的javax.swing.JFrame

这就是说,正如Andrew Thompson所说,你不应该延伸JFrame,你应该使用一个实例。

0

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

0

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

1

如果您导入javax.swing.JFrame;然后使用 公共Authenticator类扩展的JFrame { 如果没有的话用 公共Authenticator类扩展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 


所以你要做什么?
在这种情况下,您可以使用第二种方法,也称为完全取消名称 现在您导入一个pakage并为其他方法使用完全限定名称。

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!"); 
} 
} 

所以整个事情的夏日是完全合格的名称时使用的是命名冲突,我们也可以使用这种方法时,他们没有命名冲突,他们将在节目

没有-ve影响