Sphere,java,mvc 计算球的体积和表面积

本文介绍了一个基于MVC模式的Java程序实例,通过用户输入球体的半径来计算并显示球体的体积与表面积。程序包括三个核心部分:Sphere类作为模型(Model),TextView类作为视图(View),SphereWindow类作为控制器(Controller)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mvc模式介绍

 

•模型-视图-控制器(Model-View-Controller,MVC) 模式将一个交互式应用程序分成3个组件.
–模型:包含核心功能和数据。
–视图:向用户显示信息。
–控制器:处理用户输入。
•视图和控制器组成了用户接口。
•变更-传播机制保证了模型和用户接口之间的一致性。

 

 

 

 

本文要实现的Java应用程序是当用户在图形化用户界面输入一个球体的半径时,程序将显示该球体的体积与表面积。

 

•该程序主要由三个类构成:
–Sphere类扮演Model的角色
–TextView类为View角色

SphereWindow类为Controller角色。

 

 

•Model类Sphere,必须扩展Observable类,
–在Observable类中,方法addObserver()将视图与模型相关联
–当模型状态改变时,通过方法notifyObservers()通知视图。
Sphere.java

 

 

TextView.java

 

 

SphereWindow类作为Controller,它主要新建Model与View,将view与Model相关联,并处理事件

 

 

GraphicsView.java

 

  

 

 

SphereFrame.java

 

Java实现一个模型、两个视图两个控制器的功能软件,即采用MVC模式或者说是观察者模式,本程序通过输入球体半径,显示球体形状,面积体积Sphere.java package Model; import java.util.Observable; public class Sphere extends Observable { private double radius;//球体半径 private double area;//球体面积 private double volume;//球体体积 public Sphere() { radius=100d; area=4*Math.PI*Math.pow(radius, 2); volume=4*Math.PI*Math.pow(radius, 3)/3; } public double getRadius() { return radius; } public double getArea() { return area; } public double getVolume() { return volume; } public void setRadius(double radius) { this.radius = radius; this.area = 4*Math.PI*Math.pow(radius, 2); this.volume=4*Math.PI*Math.pow(radius, 3)/3; this.setChanged(); this.notifyObservers(); } } textView.java package View; import java.util.Observer; import java.util.Observable; import java.text.NumberFormat; import javax.swing.*; import Controller.TextController; import Model.Sphere; import java.awt.*; import java.awt.event.*; public class TextView extends JPanel implements Observer { private JLabel radiusLab;//提示用户输入球体半径 private JTextField radiusTextField;//接受用户输入球体半径 //private JLabel radiusRang; private JLabel areaLab;//显示球体面积 private JTextField areaTextField;//显示输入球体半径对应的面积 private JLabel volumeLab;//显示球体体积 private JTextField volumeTextField;//显示输入球体半径对应的体积 public TextView() { try { Init(); } catch(Exception e) { e.printStackTrace(); } } private void Init() throws Exception { radiusLab=new JLabel("球体半径"); radiusLab.setForeground(new Color(0,165,168)); //radiusRang=new JLabel("[0-200]"); radiusTextField = new JTextField(12); radiusTextField.setForeground(new Color(223,100,158)); radiusTextField.setBackground(new Color(210,204,230)); areaLab=new JLabel("球体面积"); areaLab.setForeground(new Color(0,165,168)); areaTextField = new JTextField(12); areaTextField.setBackground(new Color(193,219,219)); areaTextField.setEditable(fal
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值