GUI4J未来SWING的架构

    技术2022-05-11  81

        今天闲着无聊,看了看http://www.open-open.com/open66558.htm ,先是研究了下Substance,竟然能做出类APPLE和XP的界面~,不知道在LINUX下面是不是也一样,感觉应该没社么问题(嘿嘿,明天去单位试试,然后再写一篇关于SWING界面的东西).后来一眼看见了GUI4J,后来才知道这个东东已经出了很久时间各.哎~米办法,谁叫偶刚出道呢~.废话不说,进入正题.

      写WEB的有STRUTS有SPRING,写SWING的呢?貌似没一个标准,多数都是自由发挥,所以说SWING灵活嘛..为了提高开发效率和开发协调性,为社么不引进一个类STRUTS的架构呢~(显然没有主流,哪怕是即将介绍的GUI4J).其实多这个开源组件的产生兴趣是由于公司里的一个软件,由于是采用C++和JAVA的数据共享,无可厚非的用上了百油精XML(现在可谓是MVC到了及至,到哪里都是配置文件).通过解析XML,获取数据后,用JAVA将组件画出来,工程很大,导致耗用系统资源巨大.(看了PM的一个修改日志,竟然因为内存使用过大而内存益出了,最后只能关了SWING的双缓冲)==>所以觉得既然有现成的为啥不用的,(当然越到后面有点觉得GUI4J并不完善,所以说是未来的架构)

      对于GUI4J来说,说白了也就是用DOM4J解析XML然后再画出来,无非也只有这个途径,不同的是自己写和用现成的,在维护和性能上会有大大的提高,必然牺牲的灵活性(所以有时候别人说SWING比起SWT灵活很多,并非是件好事情).对于GUI4J提供了LOG4J日志管理,当然你用不到的话也没必要去用.

    一个简单的GUI4J应用可以只有3个部分组成1.gui4jComponents.properties 该文件其实是指GUI4J所支持的组建,所有的应用中都是一致的2.main.xml这个其实就是核心文件了,里面记录着界面的组成.当然你也可以搞个DTD文件来验证main.xml的合法性(其实没必要,何必为自己好麻烦呢)3.main.java

    启动类

    package org.gui4j.examples.quickstart;

    import java.net.URL;

    import org.gui4j.Gui4j;import org.gui4j.Gui4jController;import org.gui4j.Gui4jFactory;import org.gui4j.Gui4jView;import org.gui4j.exception.Gui4jExceptionHandler;

    public class Main implements Gui4jController{    private Gui4j gui4j;    private Gui4jView gui4jView;

        public static void main(String[] args)    {        Main main = new Main();        main.run();    }        private void run()    {        // initializing        URL url = Main.class.getResource("gui4jComponents.properties");        int numberOfWorkerThreads = -1;        boolean validateXML = true;        boolean logInvoke = false;        gui4j = Gui4jFactory.createGui4j(validateXML, logInvoke, numberOfWorkerThreads, url);                // creating the view  String resourceName = "main.xml";  String title = "My first application";  boolean readOnlyMode = false;  Gui4jController controller = this;        gui4jView = gui4j.createView(resourceName, controller, title, readOnlyMode);                // displaying the view        gui4jView.prepare();        gui4jView.show();    }            public boolean onWindowClosing()    {        return true;    }        public void windowClosed()    {        System.exit(0);    }

        public Gui4jExceptionHandler getExceptionHandler()    {        return null;    }        public Gui4j getGui4j()    {        return gui4j;    }}其他配置文件在http://www.gui4j.org/quickstart.html都能找到,我也不说了,毕竟盗版没正版好

    当你跑成功就会发现有点MVC的味道出来了,有点STRUTS架构的相似出来了.一样的用XML来作为数据

    源,良好的分离,对于那些不得不用XML作为画图数据来源的人来说值得研究.毕竟在中国做桌面的不多,

    多数的都是嵌入式的,LINUX和JAVA的组合

    嘿嘿 小谈下,实在累了~大家新年快乐,明天就要上班楼


    最新回复(0)