MVC是一种设计结构(非设计模式,非设计原则)
M:Model 模型层:即用于存储数据的对象
V:View 视图层:即用于为模型提供数据显示的对象
C:Controller 控制器层:即处理用户的业务逻辑(交互操作),对用户的操作做出相应,让模型和视图进行必要的交互。
在java swing中可以理解为
将某个对象视为“模型”,然后为该“模型”提供恰当的显示组件,即“视图”,为了响应用户的操作,让某个组件Listener作为“控制器”,当触发事件时,通过
视图修改或得到模型中的数据,并让视图更新显示。

以下是一个小案例,展示用MVC结构开发的窗体程序,每一部分都进行了分包处理

public class SimpleListener implements ActionListener {private JTextArea resultArea;//视图显示结果private JTextField textFieldA;//输入的边private JTextField textFieldB;private JTextField textFieldC;public void setResultArea(JTextArea resultArea) {this.resultArea = resultArea;}public void setTextFieldA(JTextField textFieldA) {this.textFieldA = textFieldA;}public void setTextFieldB(JTextField textFieldB) {this.textFieldB = textFieldB;}public void setTextFieldC(JTextField textFieldC) {this.textFieldC = textFieldC;}/*** 触发该函数的只能是那一个按钮,所以不用ActionEvent去判定他的ActionCommand* @param e*/public void actionPerformed(ActionEvent e){//获得三条边值try {double a = Double.parseDouble(textFieldA.getText());double b = Double.parseDouble(textFieldB.getText());double c = Double.parseDouble(textFieldC.getText());//构建Model对象Triangle triangle=new Triangle(a,b,c);String areaStr=triangle.getArea();resultArea.append("面积是:"+areaStr+"\n");}catch (Exception exception){System.out.println("解析数据发生异常。异常信息:"+e);resultArea.setText("请输入数字");//提示用户输入有误}}
}
public class Triangle {private double a;private double b;private double c;public Triangle(){}public Triangle(double a,double b,double c){this.a=a;this.b=b;this.c=c;}/*** 模型自己的方法* @return*/public String getArea(){//计算前应该判定是否是三角形,这里省略了//利用海伦公式求面积double p=(a+b+c)/2.0;double area=Math.sqrt(p*(p-a)*(p-b)*(p-c));return String.valueOf(area);}
}public class SimpleWindow extends JFrame {private JTextField textFieldA;private JTextField textFieldB;private JTextField textFieldC;private JTextArea resultArea;private JButton caculateBtn;//Listenerprivate SimpleListener simpleListener;public SimpleWindow(){//GUI部分setLayout(new BorderLayout());//使用东南西北中布局textFieldA=new JTextField(5);textFieldB=new JTextField(5);textFieldC=new JTextField(5);resultArea=new JTextArea();//caculateBtn=new JButton("计算");JPanel upPanel=new JPanel();//上面板upPanel.add(new JLabel("边A"));upPanel.add(textFieldA);upPanel.add(new JLabel("边B"));upPanel.add(textFieldB);upPanel.add(new JLabel("边C"));upPanel.add(textFieldC);upPanel.add(caculateBtn);add(upPanel,BorderLayout.NORTH);//将上面板加到该窗口的上部分add(new JScrollPane(resultArea),BorderLayout.CENTER);//将结果的多行输出加入滚动面板,再把滚动面板加入该窗口的中部分setVisible(true);setDefaultCloseOperation(DISPOSE_ON_CLOSE);setBounds(100,100,460,260);//设置监听器simpleListener=new SimpleListener();simpleListener.setResultArea(resultArea);simpleListener.setTextFieldA(textFieldA);simpleListener.setTextFieldB(textFieldB);simpleListener.setTextFieldC(textFieldC);//添加监听器caculateBtn.addActionListener(simpleListener);}
}
import View.SimpleWindow;public class Main {public static void main(String []args){SimpleWindow window=new SimpleWindow();}
}

效果如下

【!!!】欢迎关注我的个人线上课堂https://www.zuikakuedu.cn,内含JavaWeb与Unity游戏开发实战教程,完全免费!,Csdn博客涉及的课程资料也在该网站上

java swing开发窗体程序开发(四)MVC结构相关推荐

  1. java swing开发窗体程序开发(三)事件(Mouse,Foucs,Key,Window)

    接着刚刚的事件讲 补充一点:事件的触发前提,添加了这个监听器的组件必须是处于激活状态的才可行 (一)MouseEvent事件 该事件的触发是由鼠标的动作引起的,引起的情况可以是下面5种,按下鼠标,释放 ...

  2. java swing开发窗体程序开发(一)GUI编程

    Java SWing就是java提供的一个类库专门用于开发窗体程序的,相对于C#的winform,java swing的开发要比C#更加麻烦,他不像C#拥有可视化的界面编辑工具 而是需要像QT一样纯代 ...

  3. Java图书管理系统练习程序(四)

    2019独角兽企业重金招聘Python工程师标准>>> Java图书管理系统练习程序(四) 本部分主要介绍List的基本操作与Java中泛型的使用. 一.Java中泛型的使用 泛型, ...

  4. java队名,《JavaWeb程序开发入门》课后练习(含答案)

    <<JavaWeb程序开发入门>课后练习(含答案)>由会员分享,可在线阅读,更多相关<<JavaWeb程序开发入门>课后练习(含答案)(10页珍藏版)> ...

  5. Java Swing实用小工具开发

    Java Swing实用桌面小工具开发 ------- 2018.7.11更新 --------- 步骤8中可能出现的问题,可尝试替换jarbundler为最新版本 jarbundler-2.2.0. ...

  6. java swing 技术简介,javaswing开发简介

    本文介绍了利用 Java3D技术并结 合 Sw ing技术实现的 3D组件开发 ,并以石油数值模拟软件中 的应用为例体现了该组件具有的优势 . 图 1 3D 组件设计流程图 明...... Java ...

  7. 使用 Java 解决现代应用程序开发挑战

    Java 是最流行和广泛使用的编程语言之一,它在开发人员中的受欢迎程度是压倒性的,因为它被千万开发人员使用,并在全球超过百亿个终端上执行.Java 在创建应用程序方面更加强大,这并不是许多行业选择 J ...

  8. C#+Winform开发窗体程序

    学习笔记 第一章:winform基础 一.概述 1.Windows Form(简称WinForm) 是微软.NET平台下用于开发"图形界面"应用程序的组件. 2.C/S架构 客户机 ...

  9. 从零开始开发Python程序(四)—— 抓取每日早报新闻

    这是一片系列文章,最好先看看上一篇 从零开始开发Python程序(三)-- 用文本编辑器来写代码 目录 一.需求说明 二.程序设计 三.从指定网站获取新闻 1.找一个提供新闻的网站 2. 库的安装 3 ...

最新文章

  1. uniapp同步获取用户信息_微信小程序云开发教程微信小程序的API入门获取用户身份信息系列API...
  2. 档案盒正面标签制作_2020昆明大学档案盒价格价格行情
  3. LLBLGen 关于类型转换
  4. 以《剑与远征》为例,浅析新型挂机放置游戏的游戏特色特点
  5. c# 如何在webbrowser控件执行一段JS代码
  6. Taro项目遇到的问题
  7. 手机快充芯片及其技术标准和设计原理详解
  8. 怎么用命令启动服务器文件,linux启动服务器命令
  9. 04 grep正则表达式与shellscipt脚本编程
  10. 欢迎访问我的博客园,希望对你有所帮助
  11. javaweb小说阅读网站源码
  12. 基于vsftpd搭建ftp服务器
  13. [4G5G专题-62]:架构 - 开放的网络自动化平台ONAP(Open Network Automation Platform)
  14. nodepad++之jsonviewer插件
  15. js进行数学运算,加法,减法,乘法,除法
  16. SEO外链收录:锚文本外链代发排名
  17. python小波包分解_小波包获得某个节点信号的几个细节问题
  18. QT项目七:贪吃蛇游戏
  19. java 给图片添加暗水印_Java实现给图片添加水印
  20. 【Android系统源码修改】修改系统默认定位方式

热门文章

  1. 深度学习目标检测模型综述
  2. Bless You Autocorrect!(字典树上建图)
  3. SQL存储过程根据,循环取出数据
  4. [Linux] 读书笔记之:Linux程序设计(第4版)(ch1-7) [ 学如逆水行舟,不进则退 ]...
  5. 设计软件大合集,看看有你用过的吗
  6. C#事务处理(三)之Transactions事务
  7. 任正非详解华为不上市与家人不接班问题
  8. 百兆网线和千兆网线做法的区别
  9. Multisim电路仿真-验证KCL和KVL
  10. SeNet || 注意力机制——源代码+注释