关于SWT的开发

eclipse插件开发用到图形界面的时候需要SWT,因此这里记录下开发环境然后写一个demo以便以后快速搭建工作环境:

关于开发环境,本人也看了几篇帖子,要安装个什么windowsbuilder,网址http://download.eclipse.org/windowbuilder/WB/release/R201309271200/3.7/

但是昨晚测试了一下,不知道是不是网络问题,没有能快速下载,然后找csdn下载了一个,选择archive安装,但是还是不好使,觉得没必要折腾,就找了个现成的,已经搭建好环境的eclipse3.5,传上去以后直接拿来用,

主要还是有个界面可以拖拽一下位置,

建议不要用它来拖出组件,因为会生成一个

private static final FormToolkit formToolkit = new FormToolkit(Display.getDefault());

这样一来会和我下面的代码产生冲突,这里如果是SWT高手可能会对我进行批评,因为我的代码比较生硬,我确实没搞过SWT,所以仅仅是能用,没有考虑质量的问题,建议新手就像我这样来,避免不必要的麻烦:

package com.xjz.genecode;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.wb.swt.SWTResourceManager;

public class UIMain {

	public static void main(String[] args) {

		/**
		 * 初始化Display和Shell
		 */
		Display display = new Display();
		final Shell shell = new Shell(display, SWT.CLOSE);
		shell.setSize(600, 200);
		int[] location = getCenterLocation(shell);//居中
		shell.setLocation(location[0], location[1]);
		shell.setText("代码生成");//窗口标题

		/**
		 * XML路径选择栏
		 */
		Label lblXMLSrc = new Label(shell, SWT.CENTER);
		lblXMLSrc.setFont(SWTResourceManager.getFont("微软雅黑", 12, SWT.NORMAL));
		lblXMLSrc.setLocation(29, 38);
		lblXMLSrc.setSize(130, 23);
		lblXMLSrc.setText("\u9009\u62E9XML\u8DEF\u5F84\uFF1A");

		final Text txtXMLSrc = new Text(shell, SWT.NONE);
		txtXMLSrc.setBounds(183, 38, 259, 23);

		Button btnXMLSrc = new Button(shell, SWT.NONE);
		btnXMLSrc.setBounds(463, 37, 80, 27);
		btnXMLSrc.setText("\u9009\u62E9");
		btnXMLSrc.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {
				DirectoryDialog dirDialog = new DirectoryDialog(shell, SWT.OPEN);
				dirDialog.setFilterPath("SystemRoot");
				txtXMLSrc.setText(dirDialog.open());
			}
		});

		/**
		 * 代码生成路径指向栏
		 */
		Label lblCodeTo = new Label(shell, SWT.CENTER);
		lblCodeTo.setFont(SWTResourceManager.getFont("微软雅黑", 12, SWT.NORMAL));
		lblCodeTo.setLocation(29, 74);
		lblCodeTo.setSize(130, 23);
		lblCodeTo.setText("\u751F\u6210\u8DEF\u5F84\u6307\u5411\uFF1A");

		final Text txtCodeTo = new Text(shell, SWT.NONE);
		txtCodeTo.setBounds(183, 74, 259, 23);

		Button btnCodeTo = new Button(shell, SWT.NONE);
		btnCodeTo.setBounds(463, 73, 80, 27);
		btnCodeTo.setText("\u9009\u62E9");
		btnCodeTo.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {
				DirectoryDialog dirDialog = new DirectoryDialog(shell, SWT.OPEN);
				dirDialog.setFilterPath("SystemRoot");
				txtCodeTo.setText(dirDialog.open());
			}
		});

		/**
		 * 按钮一键生成代码
		 */
		Button createCodeBtn = new Button(shell, SWT.CENTER);
		createCodeBtn.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				Main.geneCode(txtXMLSrc.getText() ,txtCodeTo.getText());
			}
		});
		createCodeBtn.setText("\u4E00\u952E\u751F\u6210");
		createCodeBtn.setBounds(170, 120, 259, 27);

		shell.open();

		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}

		display.dispose();
	}

	private static int[] getCenterLocation(Shell shell) {
		int width = shell.getMonitor().getClientArea().width;
		int height = shell.getMonitor().getClientArea().height;
		int x = shell.getSize().x;
		int y = shell.getSize().y;
		if (x > width) {
			shell.getSize().x = width;
		}
		if (y > height) {
			shell.getSize().y = height;
		}
		int[] locations = new int[2];
		locations[0] = (width - x) / 2;
		locations[1] = (height - y) / 2;

		return locations;
	}
}

运行结果:

解释必要点:

SWT程序入口就是Display和Shell,所以一开始就创建好固定的写法,然后要什么按钮控件自己再往上添加即可。

时间: 2024-09-20 17:58:54

关于SWT的开发的相关文章

在Eclipse中用SWT设计界面

摘自http://www.tulaoshi.com/n/20160129/1488574.html 在Eclipse中用SWT设计界面 1. 为什么要使用SWT? SWT是一个IBM开发的跨平台GUI开发工具包.至于为什么IBM要费劲自己另起炉灶开发一个GUI工具包,而不是使用Sun现有的由AWT, Swing, Java 2D, Java 3D等构成的Java GUI框架,那就说来话长了.(记得在一个BBS上读过一个关于SWT起源的调侃类的帖子). 在SWT之前,Sun已经提供了一个跨平台GU

swt java 内嵌ActiveX控件

这里用的是SWT/JFace开发application中SWT自带的org.eclipse.swt.ole.win32 包可以支持内嵌OLE和ActiveX. 具体用法如下: //创建一个OleFrame做为OLE(或ActiveX)的框架 OleFrame oleFrame = new OleFrame(this, SWT.NONE); //创建ActiveX的容器,其中的classID是ActiveX的classid,在注册表中可以找到 OleControlSite oleControl =

Eclipse安装WindowBuilder

本来是想安装Visual Editor的,但是资料上提供的网址已经无法使用了,在网上搜了一些帖子,并不是很好用.但是也不是没有收获,无意中看到有人说Visual Editor已经停止维护了,不如用WindowBuilder! 于是搜了关于WindowBuilder的资料, WindowBuilder - is a powerful and easy to use bi-directional Java GUI designer WindowBuilder is composed of SWT D

数据库终期大作业报告

需求分析 现代社会,心血管疾病成为了老年人群体中高发的慢性病,一个社区医生往往需要负责多位患者的诊断工作,如果每位患者都要频繁上门问诊,会给医生带来过大的工作压力,也很难顾及到全部患者. 在信息技术高度普及的当下,完全可以利用互联网思维解决问题,制作一个软件用于实现: l  医生随时掌握所负责病人的血压数据,并为病人提供专业诊断意见. l  病人随时上传血压数据,并从医生处获得治疗意见. 概要设计 1.数据库 数据存放在名为dochelper的MySQL数据库中. 数据库包含4张表:doctor

windowbuilder

windowbuilder,也就是原来的SWT Designer.Google收购了Instantiations,把它的工具也重新免费发布了.用过swt designer的人都知它是非常好用的swing/swt可视化开发工具,有了它,swing/swt也可以像visual studio一样拖拉控件写程序(虽然netbean也可以,不过没怎用),可惜是个收费产品,后来把改名为windowbuilder.不过Google把这个工具的开发公司Instantiations收购了,并把这个产品免费发布.G

eclipse插件开发学习笔记

2016-09-01 17:11:50 1. 概述 1.1 SWT/JFace 是Eclipse 的基础,Eclipse 的 Workbench 就是建立在 SWT/JFace 之上的.另外,JFace 是在 SWT 之上开发的,它和 SWT 形成一个交集, 其中 SWT 提供最原始的组件,如下图所示 JFace是在SWT的基础上创建的,但JFace并不能完全覆盖SWT的功能 这两个图下面那个应该是对的,上面那个有点问题吗? 1.2 SWT是一个库,依赖于本机操作系统的库,会体现主机的GUI库特

Java软件工程师技能图谱

原文链接:Java软件工程师技能图谱 最近在考虑"拥有怎样的技能才能算一名合格的java软件工程师呢?"这个问题.碰巧在github发现一个很棒的开源项目--程序员技能图谱.@Zhang Wei写的Java Software Engineer Skill Map确实能解答我心中的疑问.好的东西应该向更多的人,我将英文版本根据自己的理解写成中文版,并补充了相应的学习资料(书籍是可下载的,中文书籍可能存在版权问题,推荐书籍都是比较经典的英文教材).希望这次整理能帮助更多的人解答心中的疑惑.

Eclipse SWT开发教程以及一个连连看游戏的代码实现下载

原创整理不易,转载请标明出处:Eclipse SWT开发教程以及一个连连看游戏的代码实现下载 代码下载地址:http://www.zuidaima.com/share/1772672482675712.htm 我在前面讲过:如果讲GUI编程一味只讲各个控件的使用方法,那么纯粹是浪费大家时间,如果出书,那绝对是骗钱的.所以我并不会详细地讲解SWT各个控件的具体使用方法.然而的众所周知,Eclipse的UI界面是建立在SWT基础之上的,如果一字不提SWT,似乎也不大可能.SWT是一个优秀的GUI编程

RCP开发浅谈之SWT,JFACE

RCP开发浅谈之SWT,JFACE SWT 什么是SWT? SWT全名是Standard Widget Toolkit是一个开源的GUI编程框架,我们每一个java开发者,在学习java开发的时候都会接触到awt以及swing这两个图形库,与awt,swing两个图形库不同,swt的优势体现于底层调用本地的图形库,大大提高了运行速度(损失了一定跨平台性).SWT的一个很重要的一点,一个控件并不是单独存在的,而是存在于父控件中.这样当父控件disposed后,子控件也一定很disposed了.每一