java中awt和swing的区别,Swing和AWT有什么区别?

AWT是操作系统中存在的本机系统GUI代码的Java接口。尽管它尝试,但它在每个系统上都不会起作用。

Swing是一个或多或少的纯Java GUI。它使用AWT创建一个操作系统窗口,然后将按钮,标签,文本,复选框等图片绘制到该窗口中,并响应所有鼠标点击,关键条目等,自行决定做什么而不是让操作系统处理它。因此,Swing是100%可移植的并且在各个平台上是相同的(尽管它是可换肤的并且具有“可插拔的外观和感觉”,这使得它看起来或多或少看起来像本机窗口和小部件看起来如何)。

这些是非常不同的GUI工具包方法,并且会产生很多后果。对您的问题的完整答案将尝试探索所有这些。:)这是一对夫妇:

AWT是一个跨平台的接口,因此即使它使用底层操作系统或本机GUI工具包来实现其功能,它也无法访问这些工具包可以执行的所有操作。可能不存在另一个平台上可能存在的高级或更新的AWT小部件。可能不支持在每个平台上不相同的小部件的功能,或者更糟糕的是,它们在每个平台上的工作方式可能不同。人们过去常常投入大量精力来使他们的AWT应用程序在不同平台上一致地工作 - 例如,他们可能会尝试从Java调用本机代码。

因为AWT使用本机GUI小部件,所以操作系统知道它们并处理它们彼此前面等等,而Swing小部件是从操作系统的角度来看窗口中没有意义的像素。Swing本身可以处理小部件的布局和堆叠。混合AWT和Swing是非常不受支持的,并且可能导致荒谬的结果,例如本机按钮会遮挡它们所在的对话框中的所有其他内容,因为其他所有内容都是使用Swing创建的。

因为Swing尝试用Java做所有可能的事情而不是原生GUI窗口提供的原始图形例程,所以与AWT相比,它常常会带来相当大的性能损失。不幸的是,这让Swing很慢。然而,由于更优化的JVM,更快的机器和(我推测)Swing内部的优化,这在过去几年中急剧缩小。今天,Swing应用程序可以足够快地运行,以便可维护甚至是zippy,并且几乎与使用本机小部件的应用程序无法区分。有些人会说到达这一点花了太长时间,但大多数人会说它非常值得。

最后,您可能还想查看SWT(用于Eclipse的GUI工具包,以及AWT和Swing的替代方法),这有点回归到AWT通过Java访问本机Widgets的想法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值