`
askme
  • 浏览: 57193 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SWT -- ApplicationWindow

    博客分类:
  • SWT
阅读更多
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方法。
分享到:
评论
2 楼 andrew28 2010-04-04  
怎么切换主窗口中的内容啊
1 楼 lostyue 2009-05-07  
THANKS....

相关推荐

    swt-jface入门

    【SWT/JFace 简介】 SWT(Standard Widget Toolkit)是Java开发者用于创建图形用户界面(GUI)的一种库,它与底层操作系统紧密集成,提供了可移植的API。SWT的优势在于其高性能和与操作系统原生界面的接近,这使得用...

    解决SWT原生库找不到的问题

    1. **新建SWT类**:选择“新建”>“其他”,在弹出的向导列表中找到“Designer”类别下的“SWT”>“ApplicationWindow”选项。 2. **配置类文件**:输入类名(例如“HelloWorld”),并勾选“public static main() ...

    SWT(JFace)体验之ApplicationWindow

    在本文中,我们将深入探讨SWT(Standard Widget Toolkit)和JFace这两个Java GUI库,并重点关注它们如何通过`ApplicationWindow`类来构建用户界面。`ApplicationWindow`是JFace库中的一个核心类,它提供了一个基本的...

    SWT/JFace学习文档

    在SWT基础上,JFace引入了ApplicationWindow类,它提供了更方便的窗口管理,包括菜单、工具栏和状态栏的创建。此外,JFace的数据绑定允许数据模型与UI控件直接关联,简化了数据的处理和展示。 3. SWT/JFACE 各常用...

    swt图形化界面浅浅笔记(欢迎指正)

    为了简化界面设计,你可以创建一个基于`ApplicationWindow`的类,这可以通过“New” -> “Other” -> 搜索“app” -> 选择“SWT”下的“Application Window”来完成。在设计视图中,你可以拖放控件,调整属性,并...

    SWT(JFace) Wizard(Eclipse插件编程必备)

    首先,我们看到 `HotelReservation` 类继承自 `ApplicationWindow`,这是 JFace 提供的一个基础窗口类。在这个类中,我们创建了一个按钮 "Make a reservation",当用户点击这个按钮时,会触发一个 Wizard 对话框。 ...

    SWT & JFace

    **SWT与JFace:构建Java桌面应用的利器** SWT(Standard Widget Toolkit)和JFace是用于构建Java桌面应用程序的两个重要库,它们由Eclipse项目开发并维护。SWT是一个底层的GUI库,提供了丰富的组件和功能,而JFace...

    SWT JFace 小制作 文本阅读器

    SWT JFace 小制作文本阅读器 SWT JFace 小制作文本阅读器是一个基于 Eclipse SWT 和 JFace 的一个简单的文本阅读器应用程序。它使用了 SWT 提供的 GUI 组件和 JFace 提供的应用程序框架来实现文本阅读器的功能。 ...

    SWT(JFace) 打印功能

    这里使用了JFace的`ApplicationWindow`作为基础窗口类,它提供了菜单栏和工具栏的支持。当用户点击打印按钮时,会触发`SelectionEvent`,通过`StyledTextPrintOptions`可以定制打印选项,如页边距、页眉和页脚等。`...

    Eclipse_Swt_Jface_核心应用_部分19

    15.2 应用程序窗口ApplicationWindow类 292 15.3 带有菜单栏的主程序窗口 293 15.3.1 简单写字板程序示例 293 15.3.2 添加菜单栏的基本步骤 297 15.3.3 创建菜单项 297 15.3.4 菜单项的事件处理 298 ...

    windowbuilder eclipse设置

    接着,在项目的 `src` 文件夹上右键点击,选择 “New” > “Other”,然后找到 “WindowBuilder” > “SWT” > “ApplicationWindow”。 ##### 2. 使用组件 - **操作方式**:选择一个组件,比如 Button 或 Label,...

    java bcehuh

    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:756) at org.eclipse.ui.internal.WorkbenchWindow.run...

Global site tag (gtag.js) - Google Analytics