JavaSwingMVC编程

本文探讨了在Java Swing中如何实现MVC设计模式,特别是在处理表格数据时的注意事项。强调了Model层作为数据存储,View层仅包含Swing组件,而Controller作为两者之间的桥梁。通过定义接口使View能调用Controller方法更新Model,确保Swing组件的独立性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Swing的MVC编程设计该怎么设计呢?
特别是View层是一个表格之类的,然后对表格数据进行操作。因为每一个Grid都是一个Text.很容易直接在View层进行操作。所以要做到MVC需要进行分离。
在这里插入图片描述
MVC结构如上图。可见我们要将Model层与View层分离。并且Controller层做两层的中间层。
Model层可以理解成是数据存放的地方。比如上面说到表格,那这里可能存放着一个数组。另外一些对表格有作用的属性。
View层则是Swing组件存在的地方,且只存在Swing组件。
Controller则是提供一些方法,被View层调用,对Model层进行修改。
程序设计如下:

Class View(){

}
Class Model(){

}
Class Controller(){
	public Controller(View v, Model m){
	}
}

上面结构看出来View并没有刻意调用Controller的地方。这里处理方法是用一个接口,存放View需要的调用的方法,让Controller实现。然后View使用这个接口来修改Model。

Interface ViewListener(){
	void method1();
	void method2();
}
Class View() extends JPanel{
	ViewListener listener;
	JButton button;
	View(){
		//init
		button.addActionListener(e->{
			listener.method1();
		});
	}
	public void addListener(ViewListener vl){
		listener=vl;
	}
}
Class Model(){

}
Class Controller() implements ViewListener{
	public Controller(View v, Model m){
		v.addListener(this);
	}
	@Override
	public void method1(){
		//do something to Model.
	}
	@Override
	public void method2(){
		//do something to Model.
	}
}

通过这样设计,只有View中会与Swing组件有关。

在组件的响应事件时要注意修改model中对应的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值