Topic: 请教: Swing 是完全独立的 GUI 吗?

  Print this page

1.请教: Swing 是完全独立的 GUI 吗? Copy to clipboard
Posted by: Lawme
Posted on: 2004-11-01 05:41

在 Linux 下,如果不安装 xWindow,Swing 能正常工作吗?

如果行,那 Java 太牛了;不行,则 Swing 意义不大了。呵呵!

2.Re:请教: Swing 是完全独立的 GUI 吗? [Re: Lawme] Copy to clipboard
Posted by: helloworld
Posted on: 2004-11-01 06:10

不安装 X Window是不能工作的.

BTW: 你把ms windows 程序,放到dos下,试试.

3.Re:请教: Swing 是完全独立的 GUI 吗? [Re: Lawme] Copy to clipboard
Posted by: Lawme
Posted on: 2004-11-01 06:28

helloworld:
谢谢!

4.Re:请教: Swing 是完全独立的 GUI 吗? [Re: Lawme] Copy to clipboard
Posted by: kavinwang
Posted on: 2004-11-01 08:50

楼主没有明白应用程序,gui,和运行平台的关系。
在unix平台,如果xwindow没有启动,一般在gui程序运行时会启动的。
xwindow和window都是gui,给gui程序表现的平台。
在非gui的平台下,除非你直接对显卡编程,一般是不会显示gui的。

5.Re:请教: Swing 是完全独立的 GUI 吗? [Re: Lawme] Copy to clipboard
Posted by: Lawme
Posted on: 2004-11-01 23:07

kavinwang : 谢谢你的解释。

AWT、Swing 与 “平台”的关系,请多指教一些。

教科书说,AWT 是一套 GUI,依赖平台提供的机制;Swing 则是与平台无关的GUI。

如果 Swing 离不开平台的支持,那么,如何解释它的独立性,它与 AWT 的区别体现在哪里?

6.Re:请教: Swing 是完全独立的 GUI 吗? [Re: Lawme] Copy to clipboard
Posted by: kavinwang
Posted on: 2004-11-02 08:42

awt和平台的实现是相关的,awt的实现是通过peer实现的,如果你了解虚拟工厂的模式你就会知道了。而这个peer是平台相关的,不同的平台的具体实现是不同的。
swing是在awt的基础上实现的,简略的讲,所有的swing都是awt的component的子类。所有的swing都是awt的很少一部分的子类扩展。而他的实现和显示是全部重新实现的,和具体的平台无关。有一点,component类的实现在所有的平台都差不多。
而awt是重量级的就是说他们和底层平台有很大的关系,swing是轻量级的,他们只是awt的很少一部分,和具体的平台不相关。

上面的内容可能不太正确,但我想不会影响你的理解!
如果你认为component类不对,那你可认为是Container类。

7.Re:请教: Swing 是完全独立的 GUI 吗? [Re: kavinwang] Copy to clipboard
Posted by: Lawme
Posted on: 2004-11-02 09:32


swing是在awt的基础上实现的,简略的讲,所有的swing都是awt的component的子类。所有的swing都是awt的很少一部分的子类扩展。


Java 官方文档说 AWT 是:

java.lang.Object
--- java.awt

而 Swing 是:

javax.swing

看不出二者有何关联。

另外,从网上介绍 SWT 的文章中,看到介绍二者的内容,更明确说是两个不同的“框架”:

  在SWT之前,Sun已经提供了一个跨平台GUI开发工具包AWT (Abstract Windowing Toolkit). 虽然AWT框架也使用的是原生窗口部件(native widgets),但是它一直未能突破LCD问题。LCD问题导致了一些主要平台特征的遗失。如果你不明白的话(其实我也没明白),换句话说,如果平台A 有窗口部件(widgets)1–40,而平台B有窗口部件(widgets)20–25,那么跨平台的AWT框架只能提供这两个窗口部件集的交集。

  为解决这个问题,Sun又创建了一个新的框架。这个框架不再使用原生窗口部件,而是使用仿真窗口部件(emulated widgets)。这个方法虽然解决了LCD问题,并且提供了丰富的窗口部件集,但是它也带来了新的问题。例如,Swing应用程序的界面外观不再和原生应用程序的外观相似。虽然在JVM中这些Swing应用程序已经得到了最大程度的性能改善,但是它们还是存在着其原生对应物所不具有的性能问题。并且,Swing应用程序消耗太多的内存,这样Swing不适于一些小设备,如PDA和移动电话等。

  IBM进行了尝试以彻底解决AWT和Swing框架带来的上述问题。最终,IBM创建了一个新的GUI库,这就是SWT。SWT框架通过JNI来访问原生窗口部件。如果在宿主(host)平台上无法找到一个窗口部件,SWT就会自动地模拟它。

http://www.pconline.com.cn/pcedu/empolder/gj/java/0410/469859.html

8.Re:请教: Swing 是完全独立的 GUI 吗? [Re: Lawme] Copy to clipboard
Posted by: kavinwang
Posted on: 2004-11-02 11:00

简单的说,swing就是完全模拟原生界面。
对于swt和awt,它们的根源都是一样,都是本地原生的,不过一个提供jni,一个再jvm中实现,根本过程是一样的,可能ibm在这方面做的要好些,但swing有很多东西是awt和swt不可比拟的,比如,gui的东西你可完全自己实现一套,虽说和原生的界面不同,但你也和认为它们别致,突破平台,另类等,看你怎么认为。在这方面,swing可以提供很多样式,比如metal,windows还有其它等,用swt和awt几乎没办法实现。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923