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

Breezy简介 -- 快速开发Swing程序!

阅读更多

Breezy简介 -- 快速开发Swing程序!


Breezy:
sf 项目主页: http://sourceforge.net/projects/breezy/

下载: http://sourceforge.net/project/showfiles.php?group_id=158540&package_id=177653&release_id=412125

用户讨论区: http://www.hexiao.cn/bbs/thread.php?fid=9

大家都知道开发Swing程序有三大难点:
布局设置,事件处理,和数据绑定. 使用netbean中的新的布局管理器已经解决了第一个问题, 那么后面两个呢?

Breezy 就是用来简化后面两个问题而推出的.
下面我们先来看看一个简单的例子:

package test;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;

import javax.swing.JButton;
import javax.swing.JFrame;

import net.sf.breezy.event.EventInstaller;
import net.sf.breezy.event.annotations.ActionPerformed;
import net.sf.breezy.event.annotations.DefAction;

@SuppressWarnings("serial")
public class TestBreezy extends JFrame {
     
     private JButton button = new JButton("Test Breezy!");
     
     public TestBreezy() {
           this.setLayout(new BorderLayout());
           this.add(button,BorderLayout.CENTER);
           
           // 用来处理所有的Breezy的Annotations
                    EventInstaller.processEventAnnotation(this);
           
           this.setSize(400, 300);
           this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
           
           EventInstaller.setAction(button, "action");
     }
     
  // button的事件响应方法
     @ActionPerformed("button")
     public void myButtonAction() {
          System.out.println("God, this is terrific!");//设置另外一个事件
     }
     
// 使用id注册另外一个事件响应方法
     @DefAction(id="action", name="Button")
     void action(ActionEvent e) {
           System.out.println(e + ":" + e);
     }

     /**
      * @param args
      */
     public static void main(String[] args) {
           // TODO Auto-generated method stub
           JFrame frame = new TestBreezy();
           frame.setVisible(true);
     }

}

怎么样, 看起来不错吧.

现在Breezy几乎支持所有的Swing EventListeners. 详细情况请查看类net.sf.breezy.event.annotations.*

当然了, 作为一个优秀的框架,还要有可扩展性,在Breezy中开发者还可以自定义自己的事件响应Annotation 来实现自己的功能. 详细情况请查看API.

数据绑定问题主要 就是 JTable 和JTree的问题:
使用Breezy来处理该问题,有点类似于Hibernate中的xml映射数据库属性字段差不多. 可以很方便的映射.
请看下面的例子: 和Breezy文档:

package test;

import java.util.Date;

public class Name {
     private String name = "Starwhisperer";

     private Date time = new Date();

     public String getName() {
           return name;
     }

     public void setName(String name) {
           this.name = name;
     }

     public Date getTime() {
           return time;
     }

     public void setTime(Date time) {
           this.time = time;
     }

}


User.java
package test;

import java.util.Date;

import net.sf.breezy.datatable.TableField;

public class User {
     @TableField(head = "名称", editable = false)
     private String name;

     @TableField(head = "年龄", editable = false, type = "number")
     private int age;

     @TableField(head = "阵营", type = "boolean", editable = false)
     private boolean light;

     @TableField(head = "时间", type = "time", pattern = "yyyy/MM/dd")
     private Date date = new Date();

     @TableField(head = "名称", property = "name", type="string")
     private Name nameBean = new Name();

     public Name getNameBean() {
           return nameBean;
     }

     public void setNameBean(Name nameBean) {
           this.nameBean = nameBean;
     }

     public boolean isLight() {
           return light;
     }

     public void setLight(boolean light) {
           this.light = light;
     }

     public int getAge() {
           return age;
     }

     public void setAge(int age) {
           this.age = age;
     }

     public String getName() {
           return name;
     }

     public void setName(String name) {
           this.name = name;
     }

     public Date getDate() {
           return date;
     }

     public void setDate(Date date) {
           this.date = date;
     }

}

DataTableTest .java

package test;

import java.awt.BorderLayout;
import java.util.LinkedList;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JScrollPane;

import net.sf.breezy.datatable.DataTable;
import net.sf.breezy.datatable.DataTableScrollPane;


public class DataTableTest {
     private JFrame mainFrm = new JFrame();
     
     protected void setUp() {            
           mainFrm.setSize(100, 600);
           mainFrm.setLocationRelativeTo(null);
           mainFrm.setLayout(new BorderLayout());

           mainFrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     }
     
     public static void main(String[] args) {
           DataTableTest test = new DataTableTest();

           test.setUp();
           test.testTable();
     }
     
     public void testTable() {            
           java.util.List list = new LinkedList();
           for(int i = 0; i < 120; i ++) {
                 User u = new User();
                 
                 u.setAge(33);
                 u.setName("Cain " + i);
                 list.add(u);
           }
           DataTableScrollPane<User> pane = DataTable.getEntityTablePane(list, User.class);
           
           mainFrm.add(pane, BorderLayout.CENTER);            
           mainFrm.setVisible(true);
     }
}


映射文件:datatable-mappings.xml
<?xml version="1.0"?>

<class-mapping>
     <class name="test.User">
           <property name="age" head="年龄" />
           <property name="light" head="光芒" type="boolean" editable="true"/>
           <property name="nameBean" property="time" head="姓名" pattern="yyyy/mm/dd" type="time"/>
           <property name="date" head="Date"/>
           <property name="name" head="Name"/>
     </class>
</class-mapping>

也是很简单的吧. 关于JTree的应用也是很简单的哦. 详细情况请查看用户文档:


更多信息请关注 用户交流论坛: http://www.hexiao.cn/bbs/thread.php?fid=9 

分享到:
评论

相关推荐

    breezy-pdf-lite-php:Phree客户端,用于breezy-pdf-lite,这是一种HTML->由Google Chrome提供支持的PDF服务

    breezy-pdf-lite-php PHP客户端,这是由Google Chrome提供支持 &gt; PDF服务。 依存关系 BreezyPDF Lite:HTML到PDF的生成即服务 安装 composer require jitendra/breezy-pdf-lite-php 用法与范例 use BreezyPdfLite ...

    breezy-pdf-lite:通过Chrome将HTMLCSSJS输入,PDF输出

    一键部署,然后开始从Web应用程序或命令行生成PDF。 入门 1.提交要转换HTML 这是通过Web服务器上的POST请求完成的。 在本示例中,我们将使用一些示例HTML。 curl -X POST -H ' Authorization: Bearer PRIVATE_...

    Breezy-开源

    总的来说,Breezy是Java Swing开发领域的一个强大工具,它通过注解驱动的方法降低了GUI编程的复杂性,使开发者能更专注于业务逻辑,而非基础的UI操作。它的开源性质鼓励了社区的参与,推动了持续创新和改进,对Java...

    breezy_pdf_lite-ruby:用于breezy-pdf-lite的Ruby中间件客户端,这是一种HTML->由Google Chrome提供支持的PDF服务

    安装将此行添加到您的应用程序的Gemfile中: gem 'breezy_pdf_lite' 然后执行: $ bundle或将其自己安装为: $ gem install breezy_pdf_lite用法BreezyPDFLite需要进行一些配置才能使用。 在应用程序中的某个位置...

    breezy-debian:Breezy存储库的镜像,位于https

    这些在Debian中可用(尽管可能不是builddeb开发版本所需的版本)。 它还需要安装dpkg-dev软件包(对于dpkg-mergechangelogs工具): apt-get install dpkg-dev 该插件可以通过两种方式安装。因为您可能正在使用...

    rust-breezy-timer:微风计时器的存储库,这是您可以使用的最简单的计时器,无需担心性能

    微风计时器 :timer_clock: Breezy计时器的目标是成为一个非常简单的计时库,可以将其放入生产代码中而不会改变最终性能。 请参阅“以获取更多信息。目的简单易用直接在生产代码中使用, 释放时无需修改代码,只需...

    Breezy HR for Chrome-crx插件

    Breezy for Chrome提供了一种快速,简单的方法,可将来自Xing,Indeed Resumes,AngelList,Dribbble和Github的候选人吸引到您在Breezy上的职位。 这很简单。 只需浏览到受支持的服务上的用户个人资料,单击右上方的...

    安卓Breezy Weather天气v5.2.5

    Breezy Weather微风天气是一款专为用户提供准确、实时天气信息的软件,无论您身处何地,都能提供精准的天气预报,包括温度、湿度、风速、降水概率等,还提供了小时级和未来几天的天气趋势,帮助做出更好的出行决策。

    对铬的人力资源「Breezy HR for Chrome」-crx插件

    Breezy for Chrome提供了一种快速,简单的方法,可从LinkedIn,Xing,Indeed Resumes,AngelList,Dribbble和Github寻求候选人到Breezy的职位。这很简单。只需浏览到受支持的服务上的用户个人资料,单击右上方的...

    Ubuntu_OS中文操作手册

    - **主要内容**: 包括Ubuntu的基本概念、系统安装提示、软件包管理、Linux内核管理、系统微调、网关搭建、文本编辑器使用、CVS使用、程序设计、以及面向非开发者介绍的GnuPG等内容。 - **章节结构**: - 第1章: 序言...

    BreezyAnalytics:升级您的招聘分析功能!

    如果您公司的招聘部门使用作为应用程序跟踪系统,则此应用程序可能会增强您的招聘分析功能。 这个应用程式可让您: 将所有候选数据存储在SQL数据库中,并根据需要完全匿名。 提供有关您当前的职位空缺,候选人以及...

    Python库 | lbt-honeybee-0.5.94.tar.gz

    "LBT"可能是库的开发者或项目团队的缩写,或者是库的核心理念——轻量级(Lightweight)、快速(Breezy)和可扩展(Tunable)的英文首字母组合。 在Python库的开发中,通常会按照一定的规范进行版本命名。在这个...

    Ubuntu Guide - Bahasa Indonesia

    根据提供的文件信息,我们可以...综上所述,本文档主要围绕Ubuntu操作系统的使用方法进行了详细的介绍,不仅涵盖了系统的基础知识,还涉及到了许多高级功能的应用,旨在帮助初学者快速入门并掌握Ubuntu系统的基本操作。

    ubuntu 命令参考手册含Shell命令编程

    - **多语言化**:提供了支持多种语言的方法,包括多语言应用程序的开发。 #### 十、网络设置 - **IP网络设置基础**:介绍了IP网络的基本概念和配置方法。 - **底层网络设置**:探讨了如何配置网络接口、路由表等...

    Ubuntu 手册 txt

    - **Web开发**(第196页):介绍了Web开发的基础知识及常用技术栈。 - **标准化编程**(第197页):如何遵循标准化编程规范。 - **其他编程相关话题**(第200页):涵盖了一些其他的编程相关知识和资源。 #### 十一...

    Ubuntu linux 基础.pdf

    - **用户友好**:Ubuntu提供了直观的图形界面,使得即使是Linux新手也能快速上手。 - **Live CD**:用户可以在不安装系统的情况下通过Live CD体验Ubuntu的功能。 - **GUI安装程序**:提供了一个图形化的安装过程,...

    Breezy:在tvOS上对AirDrop进行越狱实施和研究

    利用和文档类型,使用户能够辨别哪个应用程序(如果有多个)将打开/导入文件。 在下面,您将找到有关如何编辑Info.plist文件以将AirDrop接收器支持添加到您的应用程序的一些资源。 还需要处理打开文件的URL(与...

    ubuntu中文语言参考书册

    - **发行版升级**:详细说明了如何从一个版本平滑过渡到另一个版本,特别是提到的Breezy、Dapper和Edgy这几个版本的升级流程。 - **软件包管理**:深入介绍了APT的工作原理,以及如何有效地使用它来管理软件包。 - *...

    ubuntu常见问题及解决

    - **Ubuntu 5.10 Breezy Badger** - 2005年10月发布 - **Ubuntu 6.06 Dapper Drake** - 2006年6月发布 - **Ubuntu 6.10 Edgy Eft** - 2006年10月发布 - **Ubuntu 7.04 Feisty Fawn** - 2007年4月发布 - **Ubuntu ...

Global site tag (gtag.js) - Google Analytics