Java Swing MVC模式实例(笔记备忘)

来源:互联网 发布:java中文文档 编辑:程序博客网 时间:2024/06/18 00:30

MVC模式

  • MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。
  • Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。
  • View(视图) - 视图代表模型包含的数据的可视化。
  • Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

代码展示

TestModel.java

package 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,查看结果。

0 0
原创粉丝点击