什么是GRAPE, 编程开发

Grape的消息设计

09-06-01 | No Comments |

  Java是面向对象的语言,却不是纯面向对象的语言。为什么这么说呢?在Swing的API中,消息框被设计成静态方法。要知道静态本身就与面向对象相违背的。首先静态是不需要进行实例化的,它的初始化是在任何对象生成之前完成的。若对象中的某个类变量被定义为静态的,那么意味着该对象的所有实例共享该变量。我们可以用一个简单的例子验证,如下:

public class Cat {
private static String name = “mimi”;

public String getName() {
return name;
}

public void setName(String n) {
name = n;
}

public static void main(String[] args) {
Cat c1 = new Cat();
Cat c2 = new Cat();

System.out.println(“c1 name is ” + c1.getName());
System.out.println(“c2 name is ” + c2.getName());

c1.setName(“hoho”);

System.out.println(“c1 name is ” + c1.getName());
System.out.println(“c2 name is ” + c2.getName());
}
}

  执行上面这段程序,输出的结果为:
c1 name is mimi
c2 name is mimi
c1 name is hoho
c2 name is hoho

  再回过头来说Swing的消息框。Swing中,想要弹消息框,可以利用如下语句:

JOptionPane.showMessageDialog(parentCompent, message, title, messageType);

  JOptionPane提供了很多重载方法,用来弹出不同的消息框。就消息框而言,并不需要完全遵循面向对象的理论,因为其并不是有状态的事务,且生命周期短暂,我们不需要维护消息框的实例。因此,在Grape中,消息框也被设计为静态方法。不同的是,Grape的消息更易维护,也简化了用户调用。Grape消息框的调用方法为:

Message.open(parentCompent, messageKey, {可选参数});

  Message的open方法很简单,只是对JOptionPane的show方法进行了包装。传入的参数由原来传入的message,改为messageKey。后面增加了可参数。messageKey并不是消息内容,而是定义在message.properties中消息内容的key。让我们来看看message.properties文件。

M00001=E无法打开选择的文件。
M00002=I选择的文件已经被打开。
M00003=W密码无效。
M00005=Q1是否保存文档的更改?
M00006=Q2确实删除 “{0}” 吗?

  细心的开发者可能已经注意到,消息内容的开头处有”E”,”I”,”W”,”Q2″等字符,那么这些字符是用来做什么的呢?我们知道,消息框有很多种,有错误、提示、警告、询问等不同类型,每种类型的图标是不相同的。JOptionPane.shwoMessageDialog的最后一个参数就是控制显示什么类型的消息用的。将这些类型定义到消息内容中,可以不用硬编码的方式指定消息类型,以后的维护时,不需要修改代码,只要修改message.properties文件就可以了。

  例如要显示”无法打开选择的文件。”这一消息时,可以用如下调用语句。

Message.open(parentCompent, “M00001″);

  若显示询问消息框,调用方法也相同。

Message.open(parentCompent, “M00005″);

  M00005的消息类型为”Q1″,M00006的消息类型为”Q2″,这有什么区别吗?询问消息框分为两种,一种有yes和no两个按钮,另一种有yes、no和cancle三个按钮,这里的Q1代表前者,Q2代表后者。

  我们还注意到M00006的内容中有{0}字符,该字符表示的message中有一些非即定内容。例如我们使用Word编辑文章,在没有保存的情况下关闭Word,这时会提示”是否保存对 xxx的更改”,这里的xxx是文章的标题。Grape中可以利用以下语句显示这种消息框:

Message.open(parentCompent, “M00006″, “非固定消息”);

  若消息中有多个非固定消息时,可以这样定义:

M00007=E打开的文件{0}不能被{1},请先关闭{2}后再试。

  消息框的包装是很有必要的,可以保持代码简洁,维护更加方便。现代软件大多有不同语言的版本,消息自然不能写死在程序中,利用以上这种方法,也可以实现不同语言的消息显示。


五冠 Nokia/诺基亚 5230 5230XM 送证书V20版 内有港行 销数千台
1000.0元
批发 雷朋3025镜面反光太阳镜 太阳眼镜 19.9/副 顶级质量
19.9元
促销笔记本电脑 13.3英寸超薄N450无线网卡视频
1999.0元

留下您的脚印


«
»