MVC是一种通过模型、视图、控制器构造一个软件或组件的理想办法。

在例15.13中首先编一个封装三角形的类,然后再编写一个窗口。要求窗口使用3个文本框和1个文本区为三角形对象中的数据提供视图,其中3个文本框用来显示和更新三角形对象的3个边的长度,文本区对象用来显示三角形的面积。窗口有一个按钮,用户单击该按钮后,程序用3个文本框中的数据分别作为三角形的3个边的长度,并计算三角形的面积显示在文本框中。

Example15_13.java

public class Example15_13 {public static void main(String args[]){WindowTriangle win=new WindowTriangle();win.setTitle("使用MVC结构");win.setBounds(100,100,420,260);}
}

WindowTriangle.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class WindowTriangle extends JFrame implements ActionListener{Triangle triangle;     //数据对象JTextField textA,textB,textC;JTextArea showArea;JButton controlButton;WindowTriangle(){init();setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}void init(){triangle=new Triangle();textA=new JTextField(5);textB=new JTextField(5);textC=new JTextField(5);showArea=new JTextArea();controlButton=new JButton("计算面积");JPanel pNorth=new JPanel();pNorth.add(new JLabel("边A:"));pNorth.add(textA);pNorth.add(new JLabel("边B:"));pNorth.add(textB);pNorth.add(new JLabel("边C:"));pNorth.add(textC);pNorth.add(controlButton);controlButton.addActionListener(this);add(pNorth,BorderLayout.NORTH);add(new JScrollPane(showArea),BorderLayout.CENTER);}public void actionPerformed(ActionEvent e){try{double a=Double.parseDouble(textA.getText().trim());double b=Double.parseDouble(textB.getText().trim());double c=Double.parseDouble(textC.getText().trim());triangle.setA(a);triangle.setB(b);triangle.setC(c);String area=triangle.getArea();showArea.append("三角形"+a+","+b+","+c+"的面积:") ;showArea.append(area+"\n");}catch (Exception ex){showArea.append("\n"+ex+"\n");}}
}

Triangle.java

public class Triangle {double sideA,sideB,sideC,area;boolean isTriangle;public String getArea(){if(isTriangle){double p=(sideA+sideB+sideC)/2.0;area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));return String.valueOf(area);}else {return "无法计算面积";}}public void setA(double a){sideA=a;if(sideA+sideB>sideC&&sideA+sideC>sideB&&sideC+sideB>sideA)isTriangle=true;elseisTriangle=false;}public void setB(double b){sideB=b;if(sideA+sideB>sideC&&sideA+sideC>sideB&&sideC+sideB>sideA)isTriangle=true;elseisTriangle=false;}public void setC(double c){sideC=c;if(sideA+sideB>sideC&&sideA+sideC>sideB&&sideC+sideB>sideA)isTriangle=true;elseisTriangle=false;}
}

运行结果

Java例15.13——使用MVC结构计算三角形面积相关推荐

  1. Java计算三角形面积

    package lesson02; import java.awt.*; import java.util.Scanner; /** 功能:计算三角形面积 作者:盘洪林 日期:2019年3月19日 * ...

  2. java 计算三角形面积

    package c01.s01.t01; import java.util.Scanner;/*** 功能:计算三角形面积* 作者:* 日期:*/ public class CalculateTria ...

  3. 根据三个点的坐标计算三角形面积

    package chaper2;import java.sql.SQLOutput; import java.util.Scanner;/*** 编写程序,提示用户输人三角形的三个点(x1,y1).( ...

  4. python计算三角形面积_【Scratch算法编程】计算三角形面积

    [问题]已知一个三角形三条边的边长分别为a,b,c,利用海伦-秦九韶公式设计一个计算三角形面积的算法.(已知三角形三边边长分别为a b c,则三角形的面积为S= ),其中p= .这个公式被称为海伦-秦 ...

  5. 信息学奥赛一本通(1034:计算三角形面积)

    1034:计算三角形面积 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 67428     通过数: 21782 [题目描述] 平面上有一个三角形,它的三个顶点坐 ...

  6. 【青少年编程】【四级】计算三角形面积

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 我们将有关编程题目的教学视频已经发布到抖 ...

  7. 计算三角形面积 java_java 三角形面积计算(文件读取)

    [实例简介] [实例截图] [核心代码] /*课堂实践3-2(个人作业 , 总分 100) 作业描述 计算三角形面积: 一.定义一个三角形类: 1.成员变量:三个边长 2.成员方法:求面积 二.定义测 ...

  8. 一本通OJ 1034:计算三角形面积

    1034:计算三角形面积 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 39036     通过数: 11764 [题目描述] 平面上有一个三角形,它的三个顶点坐 ...

  9. 一本通1034:计算三角形面积

    1034:计算三角形面积 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 72178     通过数: 23831 [题目描述] 平面上有一个三角形,它的三个顶点坐 ...

  10. C++计算三角形面积

    [问题描述]编写一个三角形类,有计算面积,显示面积的功能等,并测试.要求有参数的构造函数. [输入形式]主函数中输入三条边的边长. [输出形式]输出三角形三角形的面积. 三个边由系统输入,作为构造函数 ...

最新文章

  1. 【Android Gradle 插件】工程根目录下 build.gradle 配置文件 ( 远程仓库配置 | 依赖配置 | 所有子模块配置 | task clean 任务 )
  2. spring -boot定时任务 quartz 基于 MethodInvokingJobDetailFactoryBean 实现
  3. git 和 github 关系?
  4. 2019年我总结的前端面试题
  5. Linux(centos)的常用基本命令
  6. python-内存中的那些事儿-看懂变量取值的过程
  7. NLP《Tranformer和Self-Attention》
  8. 主板网卡灯关机后还亮_achair的电脑桌面2019 第2集 (机箱风道,Intel无线网卡……)...
  9. oracle账号密码修改后特别容易锁定_Oracle密码过期如何取消密码180天限制及过期,账号锁住的问题...
  10. Java中抽象类和接口的区别(来源一)
  11. 1 企业实战(3) Redis服务部署和配置详解 (资源)
  12. 韩昊20190912-3 词频统计
  13. 前端核心工作内容有哪些?
  14. python采用requests+bs4爬取Gary个人博客学习页面并用mysql存储(https://www.gary666.com/learn)
  15. 键盘鼠标录制哪个好用_视频录制不用慌!这4个免费软件随意挑,网友:电脑神器...
  16. nagiosxi 监控Linux系统
  17. 淘宝APP用户行为数据分析案例(附python代码及注释)
  18. 山东科技大学计算机系招生,山东科技大学在职研究生计算机技术招生动态
  19. 一池江水半江灯。繁星点点落江城,严霜寒雪封不住,若明若暗水火情
  20. c51中断优先级c语言,51单片机中断优先级设置,中断优先级如何设置

热门文章

  1. mysql 中逆向表模型_PowerDesigner 逆向生成数据库物理模型,以 MySQL 为例
  2. 数据库建模逆向工程工具
  3. webSSH如何安装?如何使用?解决Web端远程连接终端~~运维篇
  4. vscode插件remote-ssh安装及ssh错误
  5. RGSSAD解密程序(基于RgssadUnpacker改进以支持RGSS3A)
  6. hash表 C++的使用以及理解
  7. 洛谷试炼场------题目
  8. 离散数学真值表(c语言编程实现)
  9. BFS算法解题套路框架(附习题)
  10. Java io流文件读取和写入