SWT -- ApplicationWindow

java语言的GUI包,个人比较喜欢SWT/Jface。 几年前用swing编写了
一套软件,在windows 上lookAndFeel的确不尽人意。

纯粹使用SWT,编码比较繁琐和杂乱。 因此可以适当的采用jface来优化,

主窗口

主窗口可以继承Jface的ApplicationWindow,比如:
public class MainGui extends ApplicationWindow{
public MainGui() {
super(null);
addMenuBar();
addToolBar(SWT.NONE);

}

/**
*该方法可以定义窗口的图标,标题,大小等等属性
*/
@Override
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setActive();
newShell.setImage(new Image(newShell.getDisplay(),"image/logo.ico"));
newShell.setText("Boss System");
}

/**
*该方法创建了菜单管理栏
*/
@Override
protected MenuManager createMenuManager() {
MenuManager menubar = new MenuManager(null);
MenuManager helpMenu = new FileMenuAction(this); //FileMenuAction继承MenuManager 需要自己实现定义具体功能
menubar.add(helpMenu);

return menubar;
}

/**
*该方法创建了工具栏,工具栏和菜单栏里面的按钮都可以采用Action的实现类来做触发实现
*/

@Override
protected ToolBarManager createToolBarManager(int style) {
ToolBarManager toolbar = new ToolBarManager(SWT.FLAT);
//添加toolbar按钮,实现继承于Action

return toolbar;

}

/**
* 该方法创建窗口的主题内容,你需要仔细研究SWT的layout以及其对应的参数配置,
* 否则你可能无法看到你所创建的控件。
*/

@Override
protected Control createContents(Composite parent) {
Composite body = new Composite(parent,SWT.BORDER);
//...实现窗口体的详细内容

return body;
}

public void static main(String[] args) {
MainGui appWin = new MainGui();
appWin.setBlockOnOpen(true); //阻塞,等待UI事件
appWin.open(); //打开窗口,显示
Display.getCurrent().dispose(); //关闭窗口,销毁控件
}

}

上面这段代码基本上勾勒出了Jface主程序的结构,需要关注的是一下几点:
1. SWT/Jface的大部分常量都定义在SWT这个类中,包括风格,常用颜色,layout常量等等;
2. 必须熟悉layout的使用,以及与其相对应得数据对象。 比如:RowLayout和RowData,
FormLayout和FormData,否则你可能无法正确显示你的控件。
3. 根据需要,覆盖ApplicationWindow的方法。比如如果你不需要工具栏,那你完全不需要
override createToolBarManager方法。
4. 你得到当前设备对象Display的方法是 Display.getCurrent()
5. 如果你想释放控件,你无需逐个调用每个控件的dispose方法。 父控件的dispose会级联
调用子控件的dispose方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值