`
morry
  • 浏览: 131698 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

griffon桌面开发之hello world

阅读更多

更多内容请到我的博客:http://www.mikameng.com

 

Griffon是基于Groovy语言, RCP和RIA的很好的解决方案。就像Grails开发java web一样,能够实现快速开发,测试。大大提高生产力。

 

1. 搭建开发环境:

 

下载griffon 压缩包 http://dist.codehaus.org/griffon/griffon/0.9.x/griffon-0.9.2-beta-1-bin.zip ,  解压后添加环境变量GRIFFON_HOME, 输入刚解压的griffon路径, 然后将griffon的bin目录添加到path中。

 

2. 建立项目

 

命令行进入希望创建程序的文件夹, 输入命令griffon create-app HelloWorld, 命令执行完成后, 我们的项目结构都建立起来了。 griffon为我们创建了一套mvc模型,实现是空的,等着我们去实现。

controller: griffon-app\controllers\helloword\HelloWordController.groovy

model:  griffon-app\models\helloword\HelloWordModel.groovy

view :  griffon-app\views\helloword\HelloWordView.groovy

注意:这3个类是一组mvc, 当在这个3个类中使用controller, model和view的时候, 就是指这3中的一个。 这个是griffon的约束。

看下griffon-app\conf\Application.groovy就明白了。

application {
    title = 'HelloWord'
    startupGroups = ['HelloWord']

    // Should Griffon exit when no Griffon created frames are showing?
    autoShutdown = true

    // If you want some non-standard application class, apply it here
    //frameClass = 'javax.swing.JFrame'
}
mvcGroups {
    // MVC Group for "HelloWord"
    'HelloWord' {
        model = 'helloword.HelloWordModel'
        controller = 'helloword.HelloWordController'
        view = 'helloword.HelloWordView'
    }

}

 

3. 运行项目

项目创建后, cd helloworld 进入项目目录,输入griffon run-app 即可运行刚刚建立的项目。

运行效果如下:

 

4.  安装migLayout插件

使用migLayout可以很方便的管理界面上的组件,从而解决了swing/swt的布局比较繁琐的问题。

命令行里运行:  griffon install-plugin migLayout,即可安装此插件。

 

5. 修改model实现

griffon-app\models\helloword下是model类HelloWordModel.groovy, 打开添加如下黑体代码:

 

package helloword

import groovy.beans.Bindable

class HelloWordModel {
   // @Bindable String propName
   @Bindable String userName;
   @Bindable String email;
   @Bindable String phone;

}

属性带有@Bindable意味着, 此属性可以绑定前台UI, 如果属性值发生变化的话, UI会自动更新。

6. 修改view实现

修改view代码,添加我们的简单实现。

代码运行后的界面如下:

代码如下:

package helloword
 
application(title: 'HelloWord',
  pack: true,
  locationByPlatform:true,
  iconImage: imageIcon('/griffon-icon-48x48.png').image,
  iconImages: [imageIcon('/griffon-icon-48x48.png').image,
               imageIcon('/griffon-icon-32x32.png').image,
               imageIcon('/griffon-icon-16x16.png').image]) {
    //panel(border:emptyBorder(10)) {

            borderLayout()
           
            panel(constraints: CENTER){
                    migLayout()
                                    
            label ('userName', constraints: 'left')
            textField(columns: 20, constraints: 'growx, wrap', text: bind('userName', target:model, mutual: true))
       
            label ('email', constraints: 'left')
            textField(columns: 20, constraints: 'growx, wrap', text: bind('email', target:model, mutual: true))
                   
                    label ('phone', constraints: 'left')
            textField(columns: 20, constraints: 'growx, wrap', text: bind('phone', target:model, mutual: true))
        }
           
            panel(constraints: SOUTH){
                    migLayout()                   
       
                    button( 'Save', actionPerformed: controller.save,  constraints: 'left')
                    button('Close', actionPerformed: controller.close, constraints: 'growx,wrap')
            }
           
}

页面显示分2部分,中间部分是接受用户输入, 下面是用户操作按钮。

中间部分布局使用midLayout实现:

constraints: ‘left’ 代表控件中左边

constraints: ‘growx, wrap’ 代表此控件在前一个空间后面,它的下一个空间换行。

text: bind() 是绑定刚才创建的model属性, model属性是@Bindable。

绑定提交事件:

button( ‘Save’, actionPerformed: controller.save,  constraints: ‘left’)

此句话是生成一个Save按钮, 当点击按钮的时候,调用controller的save方法。

7. 修改controller代码

griffon-app\controllers\helloword\HelloWordController.groovy是 helloworld对应的controller, 代码比较简单有2个闭包方法 save和close, 就是刚才view里绑定按钮的事件。

package helloword

class HelloWordController {
    // these will be injected by Griffon
    def model
    def view
    
    def save = {
           
            def list = []
            list << 'userName=' + model.userName
            list << 'email=' + model.email
            list << 'phone=' + model.phone
           
           
            javax.swing.JOptionPane.showMessageDialog(
                    app.windowManager.windows[0],
                    list.join('\n')
            )
    }
    
    def close= {
        app.shutdown()
    }
    
}

点击保存时,controller会利用java的JOptionPane弹出窗口, 显示用户输入的信息。

到此为止hello world实例完毕, griffon会自动注入view和model到controll里。

 

下期将改进这个实例, view还可以更简洁。 自动根据model的属性,然后添加加到view上,不用咱们手工输入了。

 

版权声明: 原创作品,允许转载,转载时请务必以超链接形式标明文章出处 、作者信息和本声明。否则将追究法律责任。

 

  • 大小: 3.1 KB
  • 大小: 5.8 KB
  • 大小: 6.8 KB
  • 大小: 9.2 KB
分享到:
评论
2 楼 morry 2010-11-12  
我也是刚开始学习
1 楼 leon1509 2010-11-12  
很好,收藏到收藏夹!再深入写点就更好了。

相关推荐

    Griffon学习笔记1 - HelloWorld

    "Griffon学习笔记1 - HelloWorld"这篇博文可能是博主在介绍如何使用Griffon框架创建一个简单的"Hello, World!"应用程序,这通常是学习新开发工具的第一步。 1. **Griffon框架**:Griffon是由Pivotal Software开发的...

    [Griffon] Griffon 实战 (英文版)

    [Manning Publications] Griffon 实战 (英文版) [Manning Publications] Griffon in Action (E-Book) ☆ 出版信息:☆ [作者信息] Andres Almiray , Danno Ferrin , James Shingler [出版机构] Manning ...

    griffon:JVM的下一代桌面应用程序开发平台

    是JVM的桌面应用程序开发平台。 受启发,Griffon利用了约定而非配置,模块化和选择自由等概念。 该框架的核心是用Java 100%编写的,允许开发人员仅使用Java编写自己的应用程序。 也可以使用其他编程语言,例如...

    Griffon In Action

    Griffon是一个基于Java语言的框架,它允许开发者使用Groovy这样的现代动态语言来快速开发桌面应用程序。与Grails和Rails相似,Griffon强调约定优于配置(CoC)原则,意味着开发者不需要编写大量的配置代码,因为框架...

    [Groovy] Groovy, Grails, Griffon 入门教程 (英文版)

    [Apress] Groovy, Grails, Griffon 入门教程 (英文版) [Apress] Beginning Groovy, Grails and Griffon (E-Book) ☆ 出版信息:☆ [作者信息] Vishal Layka, Christopher M. Judd, Joseph Faisal Nusairat, Jim ...

    Griffon in Action

    - **目标**: 旨在简化桌面应用程序的开发过程,提供一个灵活且可扩展的基础架构,使得开发者能够快速构建高质量的桌面应用程序。 - **特点**: 采用Groovy语言编写,支持动态类型语言的所有优势,如元编程、闭包等。 **2...

    Griffon学习笔记2 - 显示数据列表

    Griffon的核心理念是简化开发过程,它通过提供一套MVC(模型-视图-控制器)架构,使开发者可以专注于业务逻辑而不是底层的GUI细节。Griffon将Swing、JavaFX或其他GUI库与Groovy的强大语法结合,创建出易于理解和维护...

    Griffon Cryptanalysis Package-开源

    一种易于使用的GUI,用于对数字前密码进行密码分析。 对于历史研究人员,狂热的偏执狂或以加密为乐的人很有用。 未来的发行版将朝着更现代的方向发展。

    griffon_overlay:GriffOn Yi的个人覆盖

    【Griffon Overlay:深入理解个人覆盖机制】 在开源世界中,Gentoo Linux是一个以源代码编译闻名的Linux发行版,它允许用户自定义系统构建,通过使用ebuild文件来管理软件包的编译和安装。"griffon_overlay"是一个...

    Python库 | griffon-client-0.1.3.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:griffon-client-0.1.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    源于Griffon's IT Library的xrdp安装脚本,适用ubuntu23.10版本

    源于Griffon's IT Library(https://c-nergy.be/blog)的xrdp安装脚本,适用ubuntu23.10版本

    griffon-plugin-bridge

    格里芬插件桥用法Project Griffon UI通过@adobe/griffon-plugin-bridge npm包使用网桥,而插件视图通过加载CDN托管脚本来使用网桥通信层包括三个不同部分: 父级(lib / parent.js):这是Project Griffon UI通过...

    griffon-IDE:Griffon IDE源

    格里芬-爱德华 安装来源 ..../install-griffon 卸载 : scons -c安装 要安装FTP和SFTP(SSH),请安装sshfs curlftpfs: apt-get install curlftpfs sshfs 图书馆要求: gtk + -3.0 vte-2.91 webkitg

    Griffon IDE-开源

    Griffon 是 HTML 脚本开发人员、BASH、Perl、PHP、C 语言的文本编辑器......它允许在几次点击中生成源代码,避免陷阱 BASH 语法示例,其中单个错位的空间有能力使脚本崩溃。 IDE 的其他基本功能也存在。 由于其可...

    griffon-javafxports-sample

    基本的Griffon JavaFX / Java项目 您刚刚创建了一个基本的Griffon应用程序,其中JavaFX作为UI工具包,而Java作为主要语言。 该项目具有以下文件结构 . ├── build.gradle ├── griffon-app │ ├── conf │ ...

    griffon-vm:Griffon数据科学虚拟机

    2. **Ruby**:这是一门简洁易读的编程语言,特别适合快速开发和脚本编写。在数据科学领域,Ruby可以通过各种库如Numo::NArray和Daru来支持数据操作和分析。 3. **Python**:Python是数据科学的核心语言,拥有丰富的...

    griffon_sock

    griffon_sock GriffOn Yi的袜子代理程序。

    griffon-forge-addon:狮鹫锻造插件

    狮鹫锻造插件 :idprefix: id_(选择一个,不要修改,然后添加第二句话和简短的描述,开头是 - "The griffon-forge-addon addon enabled blah blah... )这个插件提供独立的功能,并导出服务以供使用在其他插件中。此...

Global site tag (gtag.js) - Google Analytics