编译以下awt窗口代码时,编译器报错:import java.awt.*;public class Frame
{
  public static void main(String[] args)
  {
    Frame f = new Frame("Test");
    f.setBounds(100, 100, 400, 300);
    Button ok = new Button("OK");
    ok.setBounds(20, 200, 60, 40);
    f.add(ok);
    f.setVisible(true);
  }
}
4 errors found:
File: C:\Documents and Settings\Administrator\Desktop\Frame.java  [line: 7]
Error: C:\Documents and Settings\Administrator\Desktop\Frame.java:7: cannot find symbol
symbol  : constructor Frame(java.lang.String)
location: class Frame
File: C:\Documents and Settings\Administrator\Desktop\Frame.java  [line: 8]
Error: C:\Documents and Settings\Administrator\Desktop\Frame.java:8: cannot find symbol
symbol  : method setBounds(int,int,int,int)
location: class Frame
File: C:\Documents and Settings\Administrator\Desktop\Frame.java  [line: 11]
Error: C:\Documents and Settings\Administrator\Desktop\Frame.java:11: cannot find symbol
symbol  : method add(java.awt.Button)
location: class Frame
File: C:\Documents and Settings\Administrator\Desktop\Frame.java  [line: 12]
Error: C:\Documents and Settings\Administrator\Desktop\Frame.java:12: cannot find symbol
symbol  : method setVisible(boolean)
location: class Frame但是如果把对应的awt改成swing后,相同的代码编译运行正常!import javax.swing.*;public class JFrame
{
  public static void main(String[] args)
  {
    JFrame f = new JFrame("Test");
    f.setBounds(100, 100, 400, 300);
    JButton ok = new JButton("OK");
    ok.setBounds(20, 200, 60, 40);
    f.add(ok);
    f.setVisible(true);
  }
}
为什么会有这种怪异现象呢!?

解决方案 »

  1.   

    不可能的,两个都不能编译通过!
    因为你所定义的类名与你所引用的类名冲突,
    可以这样修改
    import java.awt.*;public class Frame
    {
      public static void main(String[] args)
      {
        java.awt.Frame f = new java.awt.Frame("Test");
        f.setBounds(100, 100, 400, 300);
        Button ok = new Button("OK");
        ok.setBounds(20, 200, 60, 40);
        f.add(ok);
        f.setVisible(true);
      }
    }
      

  2.   

    晕。你类名是Frame,引用的包名也是Frame,产生冲突了。。把类public class Frame换个名字