社区
Java SE
帖子详情
**如何分离Java的界面代码与业务代码**
Jiazi840207
2005-03-25 10:50:04
一般来说,在用Swing写程序时,动作响应的实现一般是用匿名的内部类:
itemNew.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//....
}
});
但如果界面比较复杂时, 都这样写的话会造成界面的类很大,维护起来写不方便.怎么才可以很好地分离界面与业务代码,而又不破坏封装呢?有没有什么例子...
...全文
381
14
打赏
收藏
**如何分离Java的界面代码与业务代码**
一般来说,在用Swing写程序时,动作响应的实现一般是用匿名的内部类: itemNew.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ //.... } }); 但如果界面比较复杂时, 都这样写的话会造成界面的类很大,维护起来写不方便.怎么才可以很好地分离界面与业务代码,而又不破坏封装呢?有没有什么例子...
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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中的设计模式
Linux常用命令整理
Linux常用命令整理 Linux常用命令自学手册
ms-vscode-remote.remote-wsl-0.88.3.vsix
ms-vscode-remote.remote-wsl-0.88.3.vsix vscode的remote-wsl插件0.88.3版本离线安装包
基于LADRC自抗扰控制的VSG三相逆变器预同步并网控制策略附Simulink仿真.rar
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行。 3.
代码
特点:参数化编程、参数可方便更改、
代码
编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
java
项目之学校食堂订餐系统(完整前后端+说明文档+mysql).zip
采用springboot
java
语言 mysql 数据库 idea开发平台或者eclipse平台分为前台后台模式前台通知公告用户注册 菜品查看查询在线预订菜品在线支付菜品评价,查看评价热销菜品管理员管理员信息管理注册用户管理通知公告管理菜品管理订单管理支付信息管理菜品评价管理菜品销售统计(柱状图)注册用户用户资料修改我的订餐信息我的支付信息
超创新!效果超好!开普勒优化算法+双向门控循环单元网络+卷积神经网络+注意力机制的时间序列预测算法【CNN-BiGRU-Attention 】附Matlab
代码
.rar
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行。 3.
代码
特点:参数化编程、参数可方便更改、
代码
编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
Java SE
62,630
社区成员
307,264
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章