JAVA标签存档

用 Schema 验证 xml

在过去我们用 DTD 来定义 XML 文档的和法性,而现在可以利用 XML Schema (XML Schema Definition,XSD)来替代 DTD。同 DTD 相同,XML Schema 描述了 XML 文档的结构,既然如此,那么我们为什么要选择 XML Schema 而不是 DTD 呢? 1、XML Schema 可针对未来的需求进行扩展,DTD 不易扩展。 2、XML Schema 更完善,功能更强大。 3、XML Schema 基于 XML 编写,一个 XML Schema 也是一个 XML 文件。DTD 不遵循 XML 语法,这表示你不得不多去学习另外一门语言。 4、XML Schema 支持数据类型,内置多种数据类型。DTD 数据类型有限。 5、XML Schema 支持命名空间,DTD 不支持命名空间。 6、XML Schema 在 2001年5月2日成为 W3C 标准。 最近正在将 Grapevine 升级至第2代版本 ,将全 xml 配置转为 Annotation + xml 的方式。如此一来,将大大简化 xml 文件的配置,提高生产效...

Mayaa不错的表示层框架

在日本Mayaa很流行,也许是因为是日本人写的框架,总之现在很多日本的项目都用这个框架。 Mayaa处于 web 体系的表示层,主要是将后台数据交给 html 显示。Mayaa的思路很不错,它的重点在于使得 html 更加单纯,将逻辑和设计进一步分离。即使程序已经写好,页面设计人员也可以很容易地对页面进行重构且不会影响到程序的正确性。开发人员也可以更清晰地对程 序进行修改和变更。为了做到这一点,Mayaa 的做法是为每个 .html 文件配置一个 .mayaa 文件,当访问该 .html 文件时,解析对应的 .mayaa 文件并将结果交给 html ,最终做为 response 输出到客户端。那么如何取出后台数据,又该怎么将数据交给 html 呢?看两段代码: html 文件:<div m:id=”test” id=”test”/> mayaa 文件:<m:write m:id="test" value="${test}" /> 为 html 的项目追加 m:id 属性,在相应的 mayaa 文件中追加相同 m:id 的标签m:write...

Grape 开发日志 – 2

  昨天追加了一些功能,经过测试发现了几个问题,今天对其进行了修正。 1、对自定义树节点图标的改进。   问题:自定义...

Grape 开发日志 – 1

今天比较空闲,把 Grape 做了一点修改。 1、修改了几个 bug : a、修复了更换皮肤导致所有打开的文章变为修改状态。 b、修复了设置文章为“只读”后,状态栏没有改变。 2、修改并追加了几个小功能: a、密码输入框改为了 JPasswordField。 b、追加了文章密码设置。 c、查找对话框显示时,将选择的文字做为要查找的对象。 d、自定义节点(文章)图标。 3、接下来的事情: a、实现自动保存功能。 b、实现文章提醒功能。 c、追加“显示”菜单,用来控制各个功能模块(Tab)是否显示。 d、追加功能模块(Tab)拖拽功能。 e、实现全库检索功能。 f、实现文件和程序的关联。(即:默认使用 Grape 打开 *.grp 文件) g、修改“快速启动”和“文件链接”为文件样式。 f、追加剪切板管理工具。

Grape 应用及源码提供下载

接下来的时间又要开始忙了,估计这个程序一时半会做不完了。干脆把目前的成果先放出来,大家可以看看。 本程序分为两部分,Grapevine 和 Grape。Grapevine 是一个 Swing 开发框架,写的比较粗,没时间细写。实现了 OR/M、IOC、Interseptor 等功能,有兴趣的朋友可以了解一下。Grape 是建立在 Grapevine 上的一个知识管理的应用,实现了多文件、多文档编辑、发布日志到 WordPress 等功能。还是没时间,设置基本上都还没时间写,发布日志也比较简化,有时间再好好修改。 config目录下的classes.xml是类的配置文件,所有的对象都是由 Grapevine 生成并注射到程序中去的。包括画面、菜单、事件处理等等。Grapevine.jar 在 lib 目录下。 要运行程序,需要安装 jdk 6,否则程序将无法运行,切记。 程序基本上可以完成基础需求了,不过还没有测试过,可能有很多Bug。我在使用中也遇到了几个小Bug。 本次不是发布,只是接下来没有时间写了,所以把半成品给大家预览一下。目前源代码还没有整理过,注释也乱七八糟的,比...

Grape 的 Skin 处理机制

  Grape 是使用了 Swing 的 Look And Feel 机制来进行换肤的。当然仅仅使用 Look And Feel 是不够的,例如界面图标、浏览样式等等。   为了能够使换肤功能更...

Grape 的编辑器 — WordEditor

WordEditor 是为 Grape 写的一个文字处理器,实现了文字加粗、斜体、字体大小、字体样式、下划线、删除线、居左、居右、居中、文字颜色、文字背景色、插入本地图片、插入互联网图片、分隔线、下沉、上移、超链接、撤销、重做以及快捷键等基本的文字处理功能。也实现了保存为文本文件和 RTF 文件的功能。 WordEditor 支持多国语言,所有的文字以及消息都配置在 properties 文件中。若要生成中文的编辑器,只需要在构造方法中传入“cn”即可。例如:new WordEditor("cn");若要生成英文的编辑器,将“cn”改为"en"即可。日文也相同。当然,前提是 config 文件夹下必需要有这几个配置文件。中文:CN.properties,英文:EN.properties,日文:JP.properties。目前我只做了英文和中文的 properties。 Demo 的启动方法:如果你安装了 JDK1.6 及以上,双击 WordEditor.jar 可直接启动。 使用方法:如果你想在自己的 Swing 程序中使用 WordEditor ,那么可以按照以下方法使用。 ...

测试Grape发布日志功能

本文不是一篇真正意义上的日志,只是为了测试 Grape 日志发布功能,请大家忽略。 刚开始打算写 Grape 的时候,只是想做一个 Swing 下快速开发的框架。当框架开发的差不多的时候,就打算利用它开发一个 Swing 应用程序。终于在这休息的一个多月的时间里,这个应用程序开发了 80%。最主要的功能已经基本实现(还没认真测试)。下图的应用程序就是基于Grape 开发出来的。

JTextPane设置背景色的问题及解决

  Swing 的 JTextPane 是非常强大的文字处理工具,它不但可以处理文本,也可以作为浏览器来显示指定的网页。利用 JTextPane 可以很轻松地开发类似 Word 之类的文字处理工具。比如要设置文本为粗体,可以这样实现: MutableAttributeSet attr = new SimpleAttributeSet(); StyleConstants.setBold(attr, !StyleConstants .isBold(((HTMLEditorKit) editor.getEditorKit()) .getInputAttributes())); setCharacterAttributes(editor, attr, false);   设置背景色为: MutableAttributeSet attr = new SimpleAttributeSet(); StyleConstants.setBackground(attr, color); setCharacterAttributes(editor, attr, false);   看上去都没有什么问题,不过...

Java动态代理

  从JDK1.3开始,Java就引入了动态代理的概念。动态代理(Dynamic Proxy)可以帮助你减少代码行数,真正提高代码的可复用度。例如,你不必为所有的类的方法里面都写上相同的Log代码行,取而代之的是实用类的动态代理类。当然,这种便利是有条件的。   在JDK1.3以前,代理模式就已流行,所以得代理模式是生成一个和类相同接口的代理类,用户通过使用代理类来封装某个实现类。其目的是加强实现类的某个方法的功能,而不必改变原有的源代码。代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。   代理模式一般涉及到的角色有: 抽象角色:声明真实对象和代理对象的共同接口; 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。 真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。   随着Pr...
Page 1 of 3123