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

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 listeners;
    public void addActionListener(ActionListener actionlistener){
        listeners.add(actionlistener);
    }
    public void setTextArea(String text){
        textArea.setText(text);
    }

    public TestView() {
        listeners=new ArrayList();
        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

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)