讨论:awt与swing的区别?

shall 2003-03-25 09:49:14
轻量级组件与重量级组件的本质区别在哪里?
...全文
29 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
netwebs 2003-03-25
  • 打赏
  • 举报
回复
awt是native code
swing是纯java的
跟我学Java Swing之游戏设计 一 谁知道通天的巴比伦塔耗费了多少沙石?又有谁知道罗马的建成经历了多少个日夜?我 们惟一知道的是,没有一块块砖石的垒砌,就没有蜿蜒万里的长城;没有巨石和黏土的堆 集,就没有亘古不变的金字塔。由此可见,基础知识的准备对于我们学习任何事物都至 关重要,那么,就让我们从认识Swing的一些基础功能开始,启动我们建造罗马的伟大工 程吧! 前言   Java咖啡馆已经开张不少时日了,如果你已经喜欢上了Java这杯咖啡的味道,那么 记得常来哦。这一次,我们为大家准备了一大杯香浓的咖啡——将以开发一个"连连看"游 戏为蓝本,和大家共同学习Java中Swing的用法,当你细心品味这杯咖啡后,你会发现, 不但Java这杯咖啡还别有一番风味,而且还学会了专业游戏的开发方法,真是两全其美 !   为了让大家先睹为快,下图便是游戏的截图。大家可以下载游戏试玩(下载游戏程 序;下载源文件),然后在命令行方式下使用java -jar kyodai.jar来运行。此外,还可以到我的主页http://www.ismyway.com上下载这个游戏 的单机版以及手机版进行试玩(见图1)。   Java咖啡馆以前介绍过AWT的知识,那么SwingAWT究竟有什么区别呢?学习Java的 人都可能听到或看到过重量级控件和轻量级控件这个字眼,AWT就是我们通常所指的重量 级控件,Swing则是轻量级控件。我们都知道Java的口号是"一次编写,到处运行",这也 就要求在我们的程序中,尽量使用纯Java的代码。很不幸的是,AWT依赖与本地平台的接 口,因此,在不同的操作系统上,使用AWT制作的界面看起来可能会有些细微区别。Swi ng则完全不同了,Swing是用纯Java编写的,因此,使用Swing编写的界面能保证在所有 平台上有着同样的外观。这里还有一个窍门:在JDK中,为便于区别,所有Swing控件都以 大写字母J开头,比如说JButton(AWT 中对应的是Button),这样你就很容易区分Swing控件和AWT控件了。 Swing初体验   对于想学习Swing编程的朋友,我们特地为大家准备了一些小窍门。首先,下载并阅 读代码是极有必要的。由于这是一篇关于Swing的教程,所以,我们只是尽可能讲解一些 与Swing有关的内容,与Swing无关的内容一般不会涉及,例如算法部分。其次,受篇幅 限制,也不可能在这里将每部分代码都写得完完整整的,所以,大家也需要对照完整代 码来看。最后,为了使大家更容易把精力集中在Swing学习上,我们也将游戏开发中所需 资源放在下载文件中,大家下载后便能够编译运行,看到执行结果。( 下载游戏源文件)   1.顶层容器   什么是顶层容器?当我们使用Java进行图形编程的时候,图在哪里绘制呢?我们需 要一个能够提供图形绘制的容器,这个容器就被称为顶层容器,你也可以把它想象成一 个窗口。顶层容器是进行图形编程的基础,一切图形化的东西,都必然包括在顶层容器 中。在Swing中,我们有三种可以使用的顶层容器,它们分别是:   ·JFrame:用来设计类似于Windows系统中的窗口形式的应用程序。   ·JDialog:和JFrame类似,只不过JDialog是用来设计对话框。   ·JApplet:用来设计可以在嵌入在网页中的Java小程序。   如果需要使用Swing制作一个窗口类程序,我们的代码看起来应该是这样: import javax.swing.*; public class KyodaiUI extends JFrame { …… }   2.控件   控件是构成应用程序界面的基本元素,按钮、文本框、进度条等,这些都是控件。 控件(这里我们只讨论可视化控件)又可以分为容器控件和非容器控件。从字面意义上来 理解,容器控件就是能包含其他控件的特殊控件,例如,Java中的JPanel控件就属于容 器型控件,我们可以在JPanel中放置按钮、文本框等非容器控件,你甚至可以在JPanel 中再放置若干个JPanel控件(值得注意的是,顶层容器也是容器型控件,每一个窗口应用 程序中有且只能有一个顶层容器控件,换句话说,顶层容器不能包括在其他的控件中)。   Java中的容器控件有很多,除刚才提到的JPanel外,还有JTabbedPane、JScrollPa ne等,非容器控件有JButton、JLabel、JTextField等。如果你需要向某个容器型的控件 中添加控件,你可以使用 add(Component comp) 方法来实现,如: JPanel panel = new JPanel(); JButton button = new JButton(); panel.add(button);   3

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧