`

在SWT中使用Swing

 
阅读更多
在SWT出现之前,已经有众多的Swing程序和控件被开发出来,为了充分利用这些现有资源,SWT需要提供一种在SWT中使用Swing的途径。
Swing是通过在AWT的Canvas控件上绘图以显示各种控件,而AWT的控件与SWT的原理相似,都是直接对应到操作系统上的资源,因此只要利用SWT模拟出AWT的Canvas,Swing的控件就可以运行在上面了,因马刺,SWT提供了一个org.eclipse.swt.awt.SWT_AWT类,它通常被称为SWT_AWT桥。
在SWT_AWT中,提供了一个方法用于从SWT的Composite容器得到一个AWT的Frame容器new_Frame(Composite composit).
既然得到了一个AWT Frame,就可以向这个Frame中添加一个Swing的一个容器JPanel,之后的工作就和纯Swing编程一样了。
这种解决方案复杂且效率低下,往往是不得已而为之,就好象戴着手套和MM牵手一样,完全不对味。但除非你打算用SWT来重写,否则也就这一条路可走的了。

下面的例子,在SWT的Composite上添加了一个Swing的Button,代码如下:
Java代码 复制代码 收藏代码
  1. import java.awt.BorderLayout;   
  2. import java.awt.Frame;   
  3.   
  4. import javax.swing.JButton;   
  5. import javax.swing.JPanel;   
  6.   
  7. import org.eclipse.swt.SWT;   
  8. import org.eclipse.swt.awt.SWT_AWT;   
  9. import org.eclipse.swt.widgets.Composite;   
  10. import org.eclipse.swt.widgets.Display;   
  11. import org.eclipse.swt.widgets.Shell;   
  12.   
  13.   
  14. public class test {   
  15.   
  16.     /**  
  17.      * @param args  
  18.      */  
  19.     public static void main(String[] args) {   
  20.         Display display = Display.getDefault();   
  21.         Shell shell = new Shell(display);   
  22.         shell.setBounds(100100200100);   
  23.         shell.open() ;   
  24.            
  25.         Composite composite = new Composite(shell ,SWT.EMBEDDED);   
  26.         composite.setBounds(00200100);   
  27.            
  28.         Frame frame = SWT_AWT.new_Frame(composite);   
  29.         frame.setLayout(new BorderLayout());   
  30.         JPanel panel = new JPanel();   
  31.         panel.setLayout(null);   
  32.         frame.add(panel,BorderLayout.CENTER);   
  33.            
  34.         JButton button = new JButton();   
  35.         button.setBounds(101018020);   
  36.         button.setText("Swing Button");   
  37.         panel.add(button);   
  38.            
  39.         while(!shell.isDisposed()){   
  40.             if(!display.readAndDispatch()){   
  41.                 display.sleep() ;   
  42.             }   
  43.         }   
  44.     }   
  45.   
  46. }  
import java.awt.BorderLayout;
import java.awt.Frame;

import javax.swing.JButton;
import javax.swing.JPanel;

import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;


public class test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Display display = Display.getDefault();
		Shell shell = new Shell(display);
		shell.setBounds(100, 100, 200, 100);
		shell.open() ;
		
		Composite composite = new Composite(shell ,SWT.EMBEDDED);
		composite.setBounds(0, 0, 200, 100);
		
		Frame frame = SWT_AWT.new_Frame(composite);
		frame.setLayout(new BorderLayout());
		JPanel panel = new JPanel();
		panel.setLayout(null);
		frame.add(panel,BorderLayout.CENTER);
		
		JButton button = new JButton();
		button.setBounds(10, 10, 180, 20);
		button.setText("Swing Button");
		panel.add(button);
		
		while(!shell.isDisposed()){
			if(!display.readAndDispatch()){
				display.sleep() ;
			}
		}
	}

}



效果如下:
分享到:
评论

相关推荐

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

    在Java编程环境中,SWT(Standard Widget Toolkit)和AWT...总的来说,虽然SWT是Eclipse的主要GUI库,但通过桥接类,我们可以灵活地在SWT环境中使用AWT和SWING组件,以利用它们各自的优势来构建更丰富的用户界面。

    在SWING、SWT中嵌入浏览器

    在Java编程环境中,SWING和SWT(Standard Widget Toolkit)是两种常见的图形用户界面(GUI)库,用于创建桌面应用程序。然而,有时我们可能需要在这些应用中集成Web浏览功能,比如显示网页或者运行Web应用。这篇博客...

    Swing Designer SWT

    Swing Designer SWT 是一款强大的图形化工具,专为在Java环境中设计Swing和SWT用户界面而设计。这款插件是Eclipse IDE的一个扩展,它允许开发者通过直观的拖放方式构建用户界面,大大简化了GUI(图形用户界面)开发...

    swt源码和jar包dj-native-swing-swt.jar

    需要在32为浏览器中使用",这意味着这个库是针对32位系统的,如果你的应用程序或开发环境是32位的,你需要使用这个版本的SWT库才能正常运行。同时,"src中为源码,可以直接在项目中引用"意味着除了预编译的jar包之外...

    关于swing和swt的小练习

    在Java编程领域,Swing...综合这个压缩包中的练习,开发者可以通过运行和分析代码,了解Swing和SWT在实际项目中的应用,掌握组件的用法,学习布局设计,以及如何处理用户事件。这对于提高Java GUI编程技能非常有帮助。

    浅析Java中Swing与SWT和AWT的区别及实现_王亚南

    Java是一种广泛使用的编程语言,在图形用户界面(GUI)设计领域提供了多种开发包,其中比较著名的有Swing、SWT和AWT。这三种技术各有特点和适用场景,在开发Java图形界面应用时,开发者需要根据实际需求选择最合适的...

    swt swing awt的区别

    swt swing awt的区别

    java Swing、SWT分页

    在这篇文章中,我们将深入探讨Java Swing中的分页技术和SWT(Standard Widget Toolkit)的使用,同时也会提供一个项目实例以帮助理解。 首先,Java Swing是Java Foundation Classes (JFC)的一部分,它是一个轻量级...

    java GUI (SWT\SWING jxBrower)整合网页echart ,打造出高性能功能强大图表

    SWT是基于操作系统原生控件的,因此在性能和外观上更接近系统风格,而SWING则使用自绘组件,提供了更多的自定义和跨平台支持。在本项目中,可能根据需求选择合适的一个或两者结合使用。 jxBrowser是一款Java嵌入式...

    swing2swt包

    swing2swt java应用开发包,貌似现在很少了

    Java Swing to SWT.pdf

    - **事件处理**:Swing 中使用 ActionListener 等监听器,而在 SWT 中则使用 Listener 或 Event 等方式处理事件。 - **布局管理**:Swing 提供了多种布局管理器(如 BorderLayout、GridLayout),而 SWT 则使用不同...

    实际SWT的项目 Swing客户端

    实际工作的一个Swing项目,初始用户名密码为:app!

    eclipse swing/SWT插件

    在Java桌面应用开发领域,Swing和SWT(Standard Widget Toolkit)是两个常用的库,用于创建用户界面。本篇文章将深入探讨Eclipse中的Swing和SWT插件,特别是jigloo插件。 Swing是Java Foundation Classes (JFC)的一...

    Eclipse Swing Swt builder 插件安装包及安装说明

    选择“帮助”>“Eclipse Marketplace”,在搜索框中输入“WindowBuilder”或“Swing SWT Builder”,找到相关插件后点击安装。 - 方法二:手动安装。将下载的插件文件(通常是.zip或.jar格式)复制到Eclipse的...

    SWT Swing与AWT区别

    AWT是Java最初的GUI库,它的优点在于其稳定性和广泛的可用性,因为它是Java标准的一部分,无需额外安装即可在任何Java运行环境中使用。然而,AWT的设计采用了一个最低共同标准(LCD)的方法,导致其组件和功能相对...

    开发项目用SWING与RCP与SWT.JFACE的分析

    - **Composite**:类似于Swing中的Panel,作为其他UI组件的容器。 2. **org.eclipse.swt.layout**:提供了一系列布局管理器,如FillLayout、GridLayout等,用于管理组件的布局方式。 3. **org.eclipse.swt.custom...

    SWT、Swing 或 AWT:哪个更适合您

    AWT的最大优势在于它作为Java标准库的一部分,无需额外安装即可在任何Java环境中使用。此外,AWT经过多年的迭代和发展,已经非常稳定可靠。 ##### AWT的组成部分 - **GUI组件**:AWT提供的基本组件较为有限,例如...

    在eclipse下搭建swing/awt/swt开发环境的方法和插件

    在Java编程领域,Swing、AWT和SWT都是用于构建图形用户界面(GUI)的框架。本篇文章将详细介绍如何在Eclipse集成开发环境中(IDE)搭建这些框架的开发环境,以及可以使用的相关插件。 首先,让我们从AWT(Abstract ...

    SWT_AWT_Swing事件处理机制

    在Java编程语言中,SWT(Standard Widget Toolkit)、AWT(Abstract Window Toolkit)和Swing是用于构建图形用户界面(GUI)的三个重要库。这三个库各有特点,但都提供了事件处理机制,允许用户与应用程序进行交互。...

    swing和swt

    Java中的AWT(Abstract Window Toolkit)和Swing都是用于构建图形用户界面(GUI)的工具包,它们都属于Java基础类库(Java Foundation Classes, JFC)。...在实际开发中,两者也可以结合使用,以充分利用各自的特点。

Global site tag (gtag.js) - Google Analytics