SWT中嵌入Swing

 

SWT中嵌入Swing

转自:http://blog.sina.com.cn/s/blog_4d0d8bf6010008pz.html

 

1.为何要在SWT中嵌入Swing?

    对于像窗口,菜单这样的图形界面元素来说,Swing能提供的,JFace也能提供。

    但对图形操作,如Java2D,Java3D,Batik(www.apache.org)中的SVG处理,JAI中的位图操作等高级功能在SWT或JFace中没有提供。SWT不能使用诸如混叠消除、透明绘制、文本旋转等高级操作。

2.Eclipse 中,SWT EMBEDED常量使嵌入成为可能。

    Composite awtContainer=new Composite(parent,SWT.EMBEDED);
    java.awt.Frame myframe=SWT_AWT.new_Frame(awtContainer);

现在就可以随心所欲地向Frame对象中添加AWT或Swing对象了。

示例代码:

public class AwtInSwtDemo { 

    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()); 

      //SWT转换为AWT窗口的核心代码      

        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();// 可以放JButton等Swing控件  

        button.setLabel("AWT button"); 

        frame.add(button); 

      

        shell.layout(); 

        shell.open(); 

        while (!shell.isDisposed()) { 

            if (!display.readAndDispatch()) 

                display.sleep(); 

        } 

    } 

 

3.混合环境中的事务处理

    用常规方法向AWT或Swing控件中添加监听器,对AWT事件作出响应。

    但监听器访问SWT资源时必须小心,因为SWT和AWT在不同的线程中运行,这种访问应封装在一个Runnable对象之中,通过合适的Display方法执行,如syncExec(),asynExec()或timeExec().

 

4.SWT包内各种类的功能介绍

org.eclipse.swt  SWT,SWTException和SWTErrot类,提供了SWT常量与对异常处理的支持,SWT在构造窗口组件和事件处理中有很大的用途。
org.eclipse.swt.accessibility  Eclipse易访问性包,专门未残疾人设计
org.eclipse.swt.awt  提供了在SWT程序中嵌入AWT程序的接口
org.eclipse.swt.browser 提供了实现浏览器功能的控件
org.eclipse.swt.custom 除了对应本地的控件外,该包提供了一些自定义的控件
org.eclipse.swt.dnd 提供了对拖放(Drag and Drop)的支持
org.eclipse.swt.events  提供了对SWT事件监视器(Event Listener)的支持,如Button的SelectionListener,Mouse的MouseListener,MouseMoveListener和MouseTrackListener等,还有与这些对应Listener的默认Adapter实现类和Event类
org.eclipse.swt.graphics 包含了SWT中graphic类,如Color,Font和Image等
org.eclipse.swt.internal  /*  在网上没有找到相关明确的介绍 有待补充 */  
org.eclipse.swt.layout 控制GUI程序Layout的类所在(当然包括了相关的机构数据类),其中有FillLayout,GridLayout和RowLayout以及FormLayout等
org.eclipse.swt.ole.win32 提供了SWT中Win32OLE实现的一些类
org.eclipse.swt.opengl 提供渲染简单的2D图形或复杂的3D游戏图形的支持
org.eclipse.swt.printing 支持打印机的类
org.eclipse.swt.program 支持在SWT程序中使用其他应用程序打开文件
org.eclipse.swt.widgets 是常用、核心SWT窗口小部件(widget)的公有API类定义所在。如Display,Shell,Button,Menu等。一般编写GUI程序用这些Widget即可

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值