您的位置:首页 > 编程语言 > Java开发

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

2015-09-01 00:33 1046 查看

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,查看结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java mvc 可视化 swing