图形界面中事件处理的请教。

06-04-06 jdon010101
描述:

一个JPanel,有一个文本框和一个按钮。

按钮按下,检测文本框输入的数据,如果输入值不合规,则显示一个提示对话框,并设置当前焦点为文本框。

我的想法是:

Button.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent e) {

检测(Object 文本框输入值) {

检测代码

if(条件) {

提示对话框

设置焦点

}

}

}

}

因为是一个匿名内部类,所以可以访问外部类的文本框等等。

但这样,不就把业务代码放到了界面中去了吗?

如果改为

public void actionPerformed(java.awt.event.ActionEvent e) {

检测类.检测方法(Object 文本框输入值)

}

那么在检测类里,如何设置文本框代码的焦点呢?要设置就需要一个这个Panel的引用,那这是不是循环引用?

(界面)按钮 -〉 匿名事件处理 -〉处理类 -〉界面反馈

事件处理机制中,这算不算是 A类引用B类,B类引用C类,C类又引用A类。像这种界面发生事件,提交给业务处理模块进行处理,最后界面又需要得到反馈的类型,有没有什么比较好的思想或模式。

学习,谢谢。

ahler2003
2006-04-07 14:46
〉不就把业务代码放到了界面中去了吗?

在Swing中,采用了MVC,具体的说是MVC的一种变体,

因为Swing把VC合并了,成为UI。你说的没有错,如果你把验证的代码放在事件处理中,是把业务和界面结合了。但是如果你把这部分代码放在Model中,就不是这样了。JTextField 的Model是一个Document。

猜你喜欢