`
xumingming64398966@yahoo.com.cn
  • 浏览: 41115 次
文章分类
社区版块
存档分类

用xml来表示界面

阅读更多

   无聊啊,没事干,到网上找点开源的东西看看,发现一个叫SwiXml的东西可以用xml来描述界面,蛮有意思,遂下载了个看看。
   SwiXml是一个很小的gui生成引擎,它使你可以在xml文件中描述界面,而在运行期动态的生成javax.swing包里面的对象,而不用在代码中写死。其实这种东西以前别的项目已经做过,比如Thinlet, XUL, XULUX, Jelly, and SwingML, 但是我一看,觉得它这个名字太自然了Swing + Xml 看着亲切, 就决定拿这个过来看看, 下面是SwiXml官网(http://www.swixml.org)说的SwiXml与其他项目的不同之处:

 SwiXml differentiates itself from the rest by focusing  completely on javax.swing. 
 Programmers who know Swing already can immediately start writing descriptors. No 
 additional XML dialect has to be learned: Class names translate into tag names and 
 method names into attribute names. 
 SwiXml is faster since no additional layers had to be added on top of the Swing objects. 
 
 SwiXml is smaller. Despite the fact that the swixml jar file is only about 40 Kbyte 
 in size, almost all of the infamous Swing objects are supported. 
 SwiXml does Java Swing GUI generation and that is all. The dynamic behavior of the 
 user interface, defining the application's business rules, has to be coded in Java. 
下面是个例子:

import org.swixml.SwingEngine;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.io.File;

public class HelloWorld ...{
  
/** *//** submit counter */
  
private int clicks;

  
/** *//** JTextField member gets instantiated through Swixml (look for id="tf" in xml descriptor) */
  
public JTextField tf;

  
/** *//** Jlabel to display number of button clicks */
  
public JLabel cnt;

  
/** *//** Action appends a '#' to the textfields content.  */
  
public Action submit = new AbstractAction() ...{
    
public void actionPerformed( ActionEvent e ) ...{
      tf.setText( tf.getText() 
+ '#' );
      cnt.setText(String.valueOf( 
++clicks ));
    }

  }
;

  
/** *//** Renders UI at construction */
  
private HelloWorld() throws Exception ...{
      System.out.println( 
new File( "" ).getAbsolutePath() );
    
new SwingEngine( this ).render( "xml/helloworld.xml" ).setVisible( true );
  }


  
/** *//** Makes the class bootable */
  
public static void main( String[] args ) throws Exception ...{
    
new HelloWorld();
  }

}

相应的xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<frame size="640,280" title="Hello SWIXML World" defaultCloseOperation="JFrame.EXIT_ON_CLOSE">
  
<panel constraints="BorderLayout.CENTER">
    
<label labelfor="tf" font="Courier New-BOLD-12" foreground="blue" text="Hello World!"/>
    
<textfield id="tf" columns="20" Text="Swixml"/>
    
<button text="Click Here" action="submit"/>
  
</panel>

  
<panel constraints="BorderLayout.SOUTH">
    
<label font="Courier New-BOLD-36" text="Clicks:"/>
    
<label font="Courier New-BOLD-36" id="cnt"/>
  
</panel>
</frame>


效果如下:

GUI IMGAGE

结论:
上面只是一个HelloWord的例子,我们可以利用swixml来让用户配置界面,许多软件比如:office, maxthon都提供用户一个界面让用户增添按钮,有了swixml,在java里面实现可配置界面将变得极为方便。

参考资料:
  SwiXml官网: http://www.swixml.org.
  Java开源大全:http://www.open-open.com 罗列了大量的Java开源   的资料,只要你能想到的,在这里都能找得到。


 



分享到:
评论

相关推荐

    通过xml可以配置界面的应用程序

    在本场景中,"通过xml可以配置界面的应用程序"意味着我们可以通过XML文件来定义和管理应用程序的用户界面,而不是采用更底层的技术如DirectUI。这种做法的优点在于提高了代码的可维护性和灵活性。 XML文件通常包含...

    论文研究-基于XML的界面自动生成.pdf

    界面生成引擎是一种自动化工具,它可以读取FMP模型的XML表示,并通过算法将这些模型信息转化为具体的用户界面代码。这种引擎可以大幅减少手工编写界面代码的工作量,降低开发成本,并且因为是由统一的模型生成,可以...

    C#获取xml文件信息显示到web界面

    在本文中,我们将深入探讨如何使用C#编程语言来获取XML文件的信息,并将这些信息有效地呈现在Web界面上。XML(可扩展标记语言)是一种结构化的数据存储格式,广泛用于数据交换和配置文件。C#作为.NET框架的一部分,...

    MFC保存控件数据到xml及读取xml数据到控件

    在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 框架与XML库,如TinyXML2,来实现保存控件数据至XML文件以及从XML文件中读取数据回控件的功能。这对于创建应用程序配置文件或者保存用户自定义...

    根据XML配置文件自动生成窗体控件

    总的来说,这个项目结合了XML的灵活性和反射的动态性,为数据采集提供了可扩展和可配置的用户界面。开发者可以修改XML配置文件,无需重新编译代码,就能轻松调整界面布局和功能,大大提高了开发效率和软件适应性。

    UIML 用XML描述用户界面的语言

    标题:UIML—用XML描述用户界面的语言 在IT领域,特别是在Web开发与应用程序设计中,用户界面(User Interface,简称UI)的设计至关重要。它不仅关乎用户体验,还直接影响到应用的功能实现与交互效率。而UIML(User...

    xml课程设计.zip

    在学生信息管理系统中,每个学生的信息,如姓名、学号、年龄、成绩等,都可以被定义为XML元素,通过层级结构清晰地表示出来。例如: ```xml 张三 &lt;id&gt;2021001 &lt;age&gt;20 数学&lt;/subject&gt;&lt;score&gt;90 英语...

    QT QTreewidget显示和修改xml文件并导出

    在这个项目中,可能使用QDomDocument来解析XML文件,并将文档元素转化为QTreeWidget的节点。 - **QDomElement** 和 **QDomNode**:这些类分别代表XML文档中的元素和节点。在修改XML时,通过它们可以访问和改变...

    AJAX传XML的注册页面源码

    【标题】"AJAX传XML的注册页面源码"揭示了一个使用AJAX技术与XML数据...开发者可以通过分析和修改源码,提升自己的前端开发技能,尤其是了解如何使用AJAX和XML进行数据传输,以及如何设计和实现Web应用的用户认证功能。

    用XML来配置的多级目录树菜单插件JTree2.0

    综上所述,"用XML来配置的多级目录树菜单插件JTree2.0"是一个使用Java Swing的JTree组件,并利用XML作为配置文件的工具。它旨在帮助开发者构建直观、灵活的多级菜单导航系统,同时简化了菜单结构的定义和维护。通过...

    XML_xml_

    XML也被用作配置文件格式,例如在Java应用程序中,Spring框架就使用XML来配置依赖注入。 XML的解析主要有两种方式:DOM(文档对象模型)和SAX(简单API for XML)。DOM将整个XML文档加载到内存中,形成一个树状结构...

    使用WebService的方法返回xml格式的数据

    8. **显示XML数据**:在客户端,可以使用XML解析库(如jQuery的$.parseXML())或者原生的DOM API来解析XML,然后将其格式化并显示在用户界面中。 9. **示例代码**: - 使用Java的JAX-WS创建WebService,可以定义一...

    简单的xml留言簿——xml C#

    在本示例中,“简单的XML留言簿”是一个使用C#编程语言开发的应用程序,它利用XML来存储和处理用户的留言信息。C#是微软开发的一种面向对象的编程语言,特别适合于构建Windows桌面应用程序、Web服务以及游戏等。 ...

    用xml.xsl 写的课程表

    标题中的“用xml.xsl 写的课程表”指的是使用XML(可扩展标记语言)和XSL(可扩展样式表语言)技术创建的课程表应用。XML是一种用于标记数据的语言,它允许数据以结构化的方式表示,而XSL则是一种转换XML文档的样式...

    xml开发工具xmlspy

    5. **图形化XML实例生成**:通过XMLSpy,用户可以以图形化方式创建XML实例,这对于理解XML文档结构和数据表示非常有帮助。 6. **XML调试器**:内置的XML调试器能帮助开发者跟踪XSLT和XQuery脚本的执行过程,找出...

    XML实现网上商品的介绍界面——以购买鼠标为例

    在本文中,我们将深入探讨如何使用XML来创建一个网上商品介绍界面,以购买鼠标为例。这个主题涵盖了XML的基本概念、结构、以及如何与网页交互。 首先,XML的结构基于元素(Element),每个元素都由开始标签、内容和...

    用XML文件存储数据内容的记账理财软件(C#)

    XML作为一种结构化数据存储格式,允许开发者定义自定义的标签来表示数据,使得数据具有良好的可读性和可扩展性。在记账理财软件中,XML文件可以用来保存用户的收支记录、类别、日期等信息,每条记录对应一个XML元素...

    一款简单的XML编译软件

    3. **编辑器**:提供直观的界面,便于用户编辑XML文档,包括添加、删除、修改节点,以及拖放操作等。 4. **格式化**:可以对XML文件进行美化,自动缩进、换行,使其更易读。 5. **查找与替换**:允许用户在XML文件...

    XML编辑源码实例(源码)

    6. **DOM操作**:DOM(Document Object Model)是XML和HTML文档的标准表示,提供了一种与平台和语言无关的方式来访问和操作文档。源码可能包含创建、遍历和修改DOM树的方法。 7. **保存与导出**:编辑器需要能够将...

Global site tag (gtag.js) - Google Analytics