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

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。