awt和swing都是用来做一些图形界面的。
awt存在一些弊端,现在推荐使用swing,
swing中的事件处理,还是要用到awt.event包。

解决方案 »

  1.   

    1.2以后出的Swing,可以说swing的前身是awt吧
      

  2.   

    AWT作出来的图形界面在不同平台显示的效果不一样Swing作出来的图形界面不会变
      

  3.   

    awt是重量级的组件,有本地化的代边开发而成。
    swing是轻量级的组件,由Java语言开发而成。
      

  4.   

    可以看作swing是继承于awt而来的,swing中的大部分还是保留了awt原有的东西,但比awt更丰富
      

  5.   

    swing is more nice look.awt is early one.
      

  6.   

    Awt对应一个同位体,就是该组件的本地代码实现.所以如果切换系统风格,Awt代码的界面也会改变.如此,效率高,但是可以实现的组件有限制.
    Swing是Java代码自己负责绘制,绘制在一个同位体的面板上,Swing可以利用代码设置当前的界面风格,而且可以实现丰富的界面表现.
      

  7.   

    swing更大程度上实现了与平台无关性
    另外其中关于轻型组件和重型组件的构思能让
    系统更快运行java中的绘图。可参考java的api,我觉得区别还是挺大的,只不过注意一些细节勾勒
      

  8.   

    1.swing增加了一些新的组件
    2.swing具有更好的可移植性
    3.swing具有更好的外观
    4.swing更好的将组件显示的数据同数据的显示区分开
      

  9.   

    awt是Java开发用户界面最初的工具包,是建立JFC的主要基础,原来的AWT不是为许多开发人员使用的、功能强大的用户界面,缺少许多面向对象UI工具包中所能见到的特性,下层构件有严重缺陷,使用基于对等组件的体系结构,注定成为AWT的致命弱点。
    swing是建立在AWT之上的、包括大多数轻量组件的组件集,除提供了AWT所缺少的、大量的附加组件外,swing还提供了替代AWT重量组件的轻量组件。swing还包括了一个使人印象深刻的、用于实现包含插入式界面样式等特性的图形用户界面的下层构件,因此在不同的平台上,swing组件都能保持组件的界面样式特性。
    另:swing的组件大多数是轻量组件。但swing也有重量组件,因为swing必须提供一个可以在其中绘制swing轻量组件的窗口,所以swing有窗体、小应用程序、窗口和对话框等重量组件。
      

  10.   

    awt是重型组件,swing是轻型组件
      

  11.   

    怎么理解轻量和重量?
    我曾试过把awt的组件放在swing组件上,结果awt组件没显示出来,是否轻重量不分的缘故?
      

  12.   

    http://www-900.ibm.com/developerWorks/cn/java/j-j2int/index.shtml这里有一个简单的 awt 界面的编辑器,代码很简单:/*
     * JEdit.java
     *
     */import java.awt.*;
    import java.io.*;class JEdit extends Frame
    {
      TextArea jText = new TextArea();
      String jFile = new String();  JEdit()
      {
        super("JEdit Alpha 0.1");
        setLayout(new BorderLayout());
        add("Center", jText);
        jText.setFont(new Font("Courrier",Font.PLAIN,12));
        //jText.setBackground(Color.black);
        //jText.setForeground(Color.white);
        Menu menu = new Menu("File");
        menu.add(new MenuItem("Open"));
        menu.add(new MenuItem("Save"));
        menu.add(new MenuItem("Save As"));
        menu.add(new MenuItem("Quit"));
        Menu menu2 = new Menu("Help");
        menu2.add(new MenuItem("About"));
        MenuBar menuBar = new MenuBar();
        menuBar.add(menu);
        menuBar.add(menu2);
        setMenuBar(menuBar);
        pack();
        setBounds(100,100,480,400);
      }  public boolean action (Event event, Object obj)
      {
        if (((String)obj).equals("Quit"))
          dispose();
            else if (((String)obj).equals("Open"))
              loadFile();
            else if (((String)obj).equals("Save"))
              saveFile();
            else if (((String)obj).equals("Save As"))
              saveFileAs();
            else if (((String)obj).equals("About"))
              about();
        return true;
      }
      private void loadFile()
      {
        FileDialog fd = new FileDialog(this,"Open a file", FileDialog.LOAD);
        fd.show();
        jFile=fd.getDirectory()+fd.getFile();
            if (jFile==null)
              return;
            try
            {
              FileInputStream fis = new FileInputStream(fd.getDirectory()+fd.getFile
    ());
              byte [] donnees = new byte [fis.available()];
              fis.read(donnees);
              jText.setText(new String(donnees,0));
              fis.close();
            }
            catch (IOException e)
            {
              jText.setText("Unable to open file...");
            }
      }
      public boolean action (Event event, Object obj)
      {
        if (((String)obj).equals("Quit"))
          dispose();
            else if (((String)obj).equals("Open"))
              loadFile();
            else if (((String)obj).equals("Save"))
              saveFile();
            else if (((String)obj).equals("Save As"))
              saveFileAs();
            else if (((String)obj).equals("About"))
              about();
        return true;
      }
      private void loadFile()
      {
        FileDialog fd = new FileDialog(this,"Open a file", FileDialog.LOAD);
        fd.show();
        jFile=fd.getDirectory()+fd.getFile();
            if (jFile==null)
              return;
            try
            {
              FileInputStream fis = new FileInputStream(fd.getDirectory()+fd.getFile
    ());
              byte [] donnees = new byte [fis.available()];
              fis.read(donnees);
              jText.setText(new String(donnees,0));
              fis.close();
            }
            catch (IOException e)
            {
              jText.setText("Unable to open file...");
            }
      }
      private void about()
      {
      }  public static void main(String[] s)
      {
        new JEdit().show();
      }
    }
      

  13.   

    JEdit.java:72: action(java.awt.Event,java.lang.Object) is already defined in JEd
    it
      public boolean action (Event event, Object obj)
                     ^
    JEdit.java:86: loadFile() is already defined in JEdit
      private void loadFile()
                   ^
    JEdit.java:44: cannot resolve symbol
    symbol  : method saveFile ()
    location: class JEdit
              saveFile();
              ^
    JEdit.java:46: cannot resolve symbol
    symbol  : method saveFileAs ()
    location: class JEdit
              saveFileAs();
              ^
    JEdit.java:79: cannot resolve symbol
    symbol  : method saveFile ()
    location: class JEdit
              saveFile();
              ^
    JEdit.java:81: cannot resolve symbol
    symbol  : method saveFileAs ()
    location: class JEdit
              saveFileAs();
              ^
    Note: JEdit.java uses or overrides a deprecated API.
    Note: Recompile with -deprecation for details.
    6 errors
    請按任意鍵繼續 . . .
      

  14.   

    swing is based on awt
      

  15.   

    如此好帖,非顶不可!
    My ICQ ID:348732090