Java Swing MVC模式实例(笔记备忘)
2015-09-01 00:33
1046 查看
MVC模式
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。
View(视图) - 视图代表模型包含的数据的可视化。
Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。
代码展示
TestModel.javapackage model; public class TestModel { private String message; public String getMessage(){ return message; } public void setMessage(String message){ this.message=message; } }
TestView.java
package view; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JTextArea; public class TestView extends JPanel{ private static final long serialVersionUID = 1L; private JTextArea textArea; private List<ActionListener> listeners; public void addActionListener(ActionListener actionlistener){ listeners.add(actionlistener); } public void setTextArea(String text){ textArea.setText(text); } public TestView() { listeners=new ArrayList<ActionListener>(); setLayout(null); textArea=new JTextArea(); textArea.setBounds(20, 20, 400, 100); add(textArea); JButton textbtn=new JButton("Show Message"); textbtn.setBounds(120, 140, 150, 40); add(textbtn); textbtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { for(int i=0;i<listeners.size();++i){ listeners.get(i).actionPerformed(e); } } }); } }
TestController.java
package controller; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JPanel; import model.TestModel; import view.TestView; public class TestController { private TestView testview; private TestModel testmodel; public TestController() { testview=new TestView(); testmodel=new TestModel(); testview.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("suc..."); testmodel.setMessage("test..."); testview.setTextArea(testmodel.getMessage()); } }); } public JPanel getView(){ return testview; } public static void main(String[] args) { TestController testcontroller=new TestController(); JFrame frame=new JFrame("TEST"); frame.setLayout(new BorderLayout()); frame.setBounds(100, 100, 450, 300); frame.getContentPane().add(testcontroller.getView()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }
运行TestController.java,查看结果。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- 分享微信开发Html5轻游戏中的几个坑
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树