本文转载自『流子的博客!』
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();//可以放JButton等Swing控件
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对象,要显示的AWT,SWING内容都放在它上面就好。
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程序的样子。
分享到:
相关推荐
AWT-SWT-Swing AWT-SWT-Swing AWT-SWT-Swing AWT-SWT-Swing 大比较之一:模型设计与实 现 总的来说 Swing/AWT 和 SWT 在事件处理机制上是类似的,窗口组件的树状结构也是类似的。图形用户界面系统在事件处理设计上有...
实际开发中使用AWT的情况非常少,但是我们仍然有必要学习AWT。主要原因如下: 1. Swing是在AWT基础上构建的,事件模型和一些支持类(形状、颜色、字体)都一样。掌握AWT有利于后面学习SWING. Eclipse不是swing开发的,...
SWT(Standard Widget Toolkit) Standard ... 在SWT之前,Sun已经提供了一个跨平台GUI开发工具包AWT (Abstract Windowing Toolkit).AWT框架底层使用原生窗口部件(native widgets)构建,只能使用各个平台窗口部件的子集。
用前 两种库编写的桌面程序不够美观而且执行效率低,响应速度慢,SWT 恰好克服了 AWT 和 Swing 的缺点,它丰富的组件可以使程序员开发出功能很完善的 UI 程序。SWT 是由 IBM 领 导的开源项目 Eclipse 的一个子项目,...
用前 两种库编写的桌面程序不够美观而且执行效率低,响应速度慢,SWT 恰好克服了 AWT 和 Swing 的缺点,它丰富的组件可以使程序员开发出功能很完善的 UI 程序。SWT 是由 IBM 领 导的开源项目 Eclipse 的一个子项目,...
Java 世界的人似乎一直都对 Java 的桌面应用程序十分不满,从 AWT 到 SWING,从默认的 Theme到第三方的产品,不是太难看(AWT)就是在某些平台有 BUG(SWING,Quaqua--一个Windows平台下的仿Mac的主题包),再不就是...
Java 世界的人似乎一直都对 Java 的桌面应用程序十分不满,从 AWT 到 SWING,从默认的 Theme到第三方的产品,不是太难看(AWT)就是在某些平台有 BUG(SWING,Quaqua--一个Windows平台下的仿Mac的主题包),再不就是...
jface特殊场景还会集成awt,swing等组件封装为一体化的java桌面应用程序框架,定制自己的界面美化特效,定制自己的升级策略,当内部集成jvm,还可以提供跨平台无jdk的运行程序,希望有兴趣的可以一起维护和扩展,...
这一组组件可以用来在Java上开发图形用户界面,并提供了Java Swing与AWT组件的原生代码替代选项。SWT结合了所运行的平台上的外观与操作感受来提供快速构建GUI的方法,并让它们看起来确实就像是属于所运行的平台。
AWT由Java中的java.awt包提供,里面包含了许多可用来建立与平台无关的图形用户界面的类,这些类被称为组件。Java Swing是Java Foundation Classes的一部分,它是试图解决AWT缺点的一个尝试。从这一点上来说,Swing...
(2)掌握SWT常用组件的使用。 (3)掌握SWT 的事件处理。 2.实验内容 实验题1完成图3.8 所示图形界面的制作。要求“查询结果”用group组件。 实验完整代码如下: import java.awt.EventQueue; import javax....
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...
使用JFace设计GUI程序可以快速地创建一个应用程序框架,程序窗体内部的界面组件设计可以使用前面叙述的SWT组件,结合JFace提供的助手组件较为容易地完成设计。 Eclipse WindowBuilder也提供了足够的支持
MIE UI库(下简称MIE)是一个开源的手机(J2ME)GUI编程框架,与PC电脑上的AWT/Swing/SWT有相似的用处。 MIE提供了一套基本的UI组件,包括文本标签、文本框、文本域、按钮、单选框、复选框、下拉菜单、对话框、菜单、...
多数情况下,输入的数据被保存在数据库中,或者程序中使用的数据就是直接从数据库中获取的。 大量结构化数据一种主要的输出形式是表格。JFace库的表格查看器则专门管理和维护表格组件中的数据。
Composite(面板)是SWT中最常用的容器,创建面板容器后设置适当布局,向其中添加其它的子组件,从而作为重要的界面布局工具使用。
工具栏和菜单是几乎所有的GUI程序都需要设计的界面元素,它们为应用程序提供了快速执行特定方法和程序逻辑的用户接口。...本章介绍工具栏和菜单的设计,伸缩面板、数值组件、浏览器和系统托盘等控件的设计与使用。
javajface.zip 20.SWT增强组件库JFace 第5部分(5个程序包) javaapplet.zip 21.Applet网络组件——电子相册 javanet.zip 22.Java网络编程详解(Socket/UDP实例、简单聊天系统) javanio.zip 23.NIO非阻塞通信...