社区
Java SE
帖子详情
**如何分离Java的界面代码与业务代码**
Jiazi840207
2005-03-25 10:50:04
一般来说,在用Swing写程序时,动作响应的实现一般是用匿名的内部类:
itemNew.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//....
}
});
但如果界面比较复杂时, 都这样写的话会造成界面的类很大,维护起来写不方便.怎么才可以很好地分离界面与业务代码,而又不破坏封装呢?有没有什么例子...
...全文
418
14
打赏
收藏
**如何分离Java的界面代码与业务代码**
一般来说,在用Swing写程序时,动作响应的实现一般是用匿名的内部类: itemNew.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ //.... } }); 但如果界面比较复杂时, 都这样写的话会造成界面的类很大,维护起来写不方便.怎么才可以很好地分离界面与业务代码,而又不破坏封装呢?有没有什么例子...
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Jiazi840207
2005-03-29
打赏
举报
回复
再顶一下...
Jiazi840207
2005-03-28
打赏
举报
回复
TO superman421(38度的雪) :
还有一点不明白,就是在上例的Mediator类中,如何才能改变界面呢?(如界面中按钮以及TextField的状态等...)...是不是还要在Mediator的构造器中传入Test的引用呢?
fdabobi
2005-03-26
打赏
举报
回复
有几种方法
1.创建扩展监听器接口的一个自定义类,在你的界面代码内使用
MyListener a = new MyListener();
itemNew.addActionListener(a);
这样就分成2个文件了,你可能看上去舒服点,维护也可能容易一些
因为可以拥有自己的构造函数与各种属性,这样的监听器能够处理更复杂的事务
比较适合复杂的事件处理,或者同时为多个组件提供服务的监听器
2.还是一个文件,监听器作为内部类被声明
但是在事件触发时,执行在外部类中定义个一个方法,
因为匿名类是可以调用外部类属性和方法的,如:
public void doAction(){
....处理工作
}
itemNew.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
...若干操作
doAction();
...若干操作
}
});
这样,你只需要注意维护那个doAction就行了
而且你能把多个内部监听类共有的代码分离出来作为一个方法来维护
这样比较适合较小并且事件处理不复杂的程序
apollo333
2005-03-26
打赏
举报
回复
按 fdabobi(小爪尖尖) 的第一种方法就可以
MyListener a = new MyListener();
itemNew.addActionListener(a);
其中
public class MyListener implements ActionListener,MouseListener{
public void mousePressed(MouseEvent e) {
//do something
}
public void actionPerformed(ActionEvent e){
//do something
}
//other methods.......
}
superman421
2005-03-26
打赏
举报
回复
不用那么悬浮的 MVC struts之类的。
问的是图形界面的问题。
用点设计模式就可以了! 看看这个 mediator
public class Mediator implements ActionListener{
protected JFrame gui;
public void actionPerformed(ActionEvent e)
{
...
}
public addToMediator(JFramegui)
{
this.gui = gui;
}
}
/////////////////////////
public class Test extends JFrame
{
Mediator mediator;
JButton button;
public void Test(){
button = new JButton("...");
button.addActionListener(mediator);
}
public static void main(){
...
}
}
给你一个简单的例子。自己动动脑筋改改,同一个界面就可以做不同的事了,只要换一个mediator.
至少这个样子可以让你把界面和功能分开。
leekooqi
2005-03-26
打赏
举报
回复
建议先学习JavaBean,再深入点到EJB,到时候,你就自然知道了!
飞行的兔子
2005-03-26
打赏
举报
回复
struts很简单的,好好看看几天就能理解的很好了!
Jiazi840207
2005-03-26
打赏
举报
回复
可是对STRUCTS了解不多,也没有时间看了...这个复杂吗?
java_jing
2005-03-26
打赏
举报
回复
mvc.struts不错
wandou999
2005-03-26
打赏
举报
回复
如果你试着去用STRUTS,一切问题都解决了
Jiazi840207
2005-03-26
打赏
举报
回复
按apollo333()所说的方法有一个问题,如果要改访问界面代码中的其它元素(如要改变界面中其它组件的状态),就不能声明为private的,是不是破坏了封装了呢?
平淡面对
2005-03-26
打赏
举报
回复
Adapter 模式就很适合。你可以继承相应的Adapter, 写你需要的部分。
飞行的兔子
2005-03-25
打赏
举报
回复
你将这个业务类单独写成一个类,在内部引用就是了,难道一定要写在内部?
Hodex
2005-03-25
打赏
举报
回复
可参考MVC模式或看看ejb中的设计模式
图书管理系统+
Java
源
代码
+SQL Server数据库文件
图书管理系统+
Java
源
代码
+SQL Server数据库文件 直接导包到开发工具里,使用SQL Server数据库
JAVA
企业门户网站源
代码
内含 整个系统的源
代码
和数据库 该
代码
都在XP上用Eclipse 调试通过了
图书管理系统(
Java
实现)[附完整
代码
]
图书管理系统
教务管理系统(
Java
源
代码
)
教务管理系统。自己去看了啊 。
Java
新闻发布系统源
代码
简单的新闻发布系统源
代码
jsp + servlet经典示例, mysql数据库 适合
java
web新手学习。
Java SE
62,629
社区成员
307,258
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章