`
wenhai_zhang
  • 浏览: 181642 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

如何在SWT中使用AWT、SWING组件

    博客分类:
  • java
阅读更多

本文转载自『流子的博客!
http://liuzi.roboticfan.com
更多精彩内容,欢迎访问流子的博客!
1
推荐大家知道在windows平台上SWT有一种更快更美更好的优势,但是现在的许多控件,比如jfreechart是基于Swing,这就有个需要把SWT-AWT桥接起来的问题.

前几天就遇到了这个问题,就是要在一个Eclipse里显示JFreeChart的图形,因为后者是基于Java2D的,要把图形显示在SWT应用程序里需要利用SWT-AWT桥接器来实现,虽说桥接的方式多半会伴随着性能下降,但总归是一个解决方法。
用一个基于SWING的控件,比如:报表、数据流、已成型的SWING界面等。这时,你就会碰上如何在SWT中使用SWING的问题。这种解决方案复杂且效率低下,往往是不得已而为之,就好象戴着手套和MM牵手一样,完全不对味。但除非你打算用SWT来重写,否则也就这一条路可走的了。
一、将SWING界面嵌套到SWT控件中

/*
 * @(#)TestAwtInSwt.java  2005-10-24
 */
import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

/**
 * swt
中显示awt控件

 * @author ChenGang 2005-10-24
 */
public class TestAwtInSwt {

    public static void main(String[] args) {
        final Display display = Display.getDefault();
        final Shell shell = new Shell();
        shell.setSize(327, 253);
        shell.setText("SWT Application");
        //------------------
新插入的界面核心代码----------

        shell.setLayout(new RowLayout());
        Composite comp = new Composite(shell, SWT.EMBEDDED);//SWT.EMBEDDED
必须

        java.awt.Frame frame = SWT_AWT.new_Frame(comp);//只能放frame不能放JFrame
        java.awt.Button button = new java.awt.Button();//
可以放JButtonSwing控件

        button.setLabel("AWT button");
        frame.add(button);

        //------------------END------------------------
        shell.layout();
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
    }
}
关键之处在于SWT_AWT.new_Frame()方法,得到的是一个java.awt.Frame对象,要显示的AWTSWING内容都放在它上面就好。

BTW, SWT下免费的图表工具好象很少,只能暂时先这样使用JFreeChart了。

Update: 如果要在SWT里显示带有动画效果的AWT图形,最好在Frame上先放一个JPanel这样的带有双缓冲的控件,否则图象在运动时会产生明显的闪烁。
二、用SwingWT
 
  SwingWT是一个开源软件:http://swingwt.sourceforge.net/。这个软件是几个JAR包,它实现了SWING大部份控件的接口,但却是用了SWT来实现。这时,你只需要将SWING软件中的各类前面import的包名,转换成SwingWT的类就成了。具体怎么实现我也没试过。

 
 
三、两种方式的对比
 
1)前者不用改用SWING的软件的源代码,后者需要。
2)前者在界面显示上还是SWING的样子,后者是SWT程序的样子。

 

分享到:
评论

相关推荐

    java Swing深入

    AWT-SWT-Swing AWT-SWT-Swing AWT-SWT-Swing AWT-SWT-Swing 大比较之一:模型设计与实 现 总的来说 Swing/AWT 和 SWT 在事件处理机制上是类似的,窗口组件的树状结构也是类似的。图形用户界面系统在事件处理设计上有...

    AWT基础知识

    实际开发中使用AWT的情况非常少,但是我们仍然有必要学习AWT。主要原因如下: 1. Swing是在AWT基础上构建的,事件模型和一些支持类(形状、颜色、字体)都一样。掌握AWT有利于后面学习SWING. Eclipse不是swing开发的,...

    SWT中文基础组件教程

    SWT(Standard Widget Toolkit) Standard ... 在SWT之前,Sun已经提供了一个跨平台GUI开发工具包AWT (Abstract Windowing Toolkit).AWT框架底层使用原生窗口部件(native widgets)构建,只能使用各个平台窗口部件的子集。

    Eclipse SWT JFace核心应用相关应用及源码.rar

    用前 两种库编写的桌面程序不够美观而且执行效率低,响应速度慢,SWT 恰好克服了 AWT 和 Swing 的缺点,它丰富的组件可以使程序员开发出功能很完善的 UI 程序。SWT 是由 IBM 领 导的开源项目 Eclipse 的一个子项目,...

    SWT/JFace的核心应用与实战教程的PDF电子版.rar

    用前 两种库编写的桌面程序不够美观而且执行效率低,响应速度慢,SWT 恰好克服了 AWT 和 Swing 的缺点,它丰富的组件可以使程序员开发出功能很完善的 UI 程序。SWT 是由 IBM 领 导的开源项目 Eclipse 的一个子项目,...

    SWT 图形编程全接触

    Java 世界的人似乎一直都对 Java 的桌面应用程序十分不满,从 AWT 到 SWING,从默认的 Theme到第三方的产品,不是太难看(AWT)就是在某些平台有 BUG(SWING,Quaqua--一个Windows平台下的仿Mac的主题包),再不就是...

    SWT-全接触 IBM

    Java 世界的人似乎一直都对 Java 的桌面应用程序十分不满,从 AWT 到 SWING,从默认的 Theme到第三方的产品,不是太难看(AWT)就是在某些平台有 BUG(SWING,Quaqua--一个Windows平台下的仿Mac的主题包),再不就是...

    swtUI4:基于swt,jface特殊场景还会集成awt,swing等组件封装为一体化的java桌面应用程序框架,定制自己的界面美化特效,定制自己的升级策略,当内部集成jvm,还可以提供跨平台无jdk的运行程序,希望有兴趣的可以一起维护和扩展,扩展rcp,swt方向在国内市场的应用

    jface特殊场景还会集成awt,swing等组件封装为一体化的java桌面应用程序框架,定制自己的界面美化特效,定制自己的升级策略,当内部集成jvm,还可以提供跨平台无jdk的运行程序,希望有兴趣的可以一起维护和扩展,...

    SWT程序高手秘笈--英文原版

    这一组组件可以用来在Java上开发图形用户界面,并提供了Java Swing与AWT组件的原生代码替代选项。SWT结合了所运行的平台上的外观与操作感受来提供快速构建GUI的方法,并让它们看起来确实就像是属于所运行的平台。

    如何进行Java GUI图形用户界面编程

    AWT由Java中的java.awt包提供,里面包含了许多可用来建立与平台无关的图形用户界面的类,这些类被称为组件。Java Swing是Java Foundation Classes的一部分,它是试图解决AWT缺点的一个尝试。从这一点上来说,Swing...

    JAVA图形用户界面

    (2)掌握SWT常用组件的使用。 (3)掌握SWT 的事件处理。 2.实验内容 实验题1完成图3.8 所示图形界面的制作。要求“查询结果”用group组件。 实验完整代码如下: import java.awt.EventQueue; import javax....

    Eclipse_Swt_Jface_核心应用_部分19

    1.5 Sun AWT/Swing与Eclipse SWT 7 1.5.1 Swing与SWT的比较 7 1.5.2 SWT的优势和不足 8 1.6 SWT与JFace、Eclipse 9 1.6.1 JFace是SWT的扩展 9 1.6.2 Eclipse的UI界面基于JFace 10 1.7 本章小结 10 第2...

    第9章 JFace GUI程序设计.pptx

    使用JFace设计GUI程序可以快速地创建一个应用程序框架,程序窗体内部的界面组件设计可以使用前面叙述的SWT组件,结合JFace提供的助手组件较为容易地完成设计。 Eclipse WindowBuilder也提供了足够的支持

    MIE J2ME UI库 v1.0

    MIE UI库(下简称MIE)是一个开源的手机(J2ME)GUI编程框架,与PC电脑上的AWT/Swing/SWT有相似的用处。 MIE提供了一套基本的UI组件,包括文本标签、文本框、文本域、按钮、单选框、复选框、下拉菜单、对话框、菜单、...

    第11章 表格设计与数据处理.ppt

    多数情况下,输入的数据被保存在数据库中,或者程序中使用的数据就是直接从数据库中获取的。 大量结构化数据一种主要的输出形式是表格。JFace库的表格查看器则专门管理和维护表格组件中的数据。

    第6章 容器的使用.ppt

    Composite(面板)是SWT中最常用的容器,创建面板容器后设置适当布局,向其中添加其它的子组件,从而作为重要的界面布局工具使用。

    第7章 工具栏、菜单及其它组件的设计.ppt

    工具栏和菜单是几乎所有的GUI程序都需要设计的界面元素,它们为应用程序提供了快速执行特定方法和程序逻辑的用户接口。...本章介绍工具栏和菜单的设计,伸缩面板、数值组件、浏览器和系统托盘等控件的设计与使用。

    java高手真经 光盘源码

    javajface.zip 20.SWT增强组件库JFace 第5部分(5个程序包) javaapplet.zip 21.Applet网络组件——电子相册 javanet.zip 22.Java网络编程详解(Socket/UDP实例、简单聊天系统) javanio.zip 23.NIO非阻塞通信...

Global site tag (gtag.js) - Google Analytics