开发工具:
文件大小: 15kb
下载次数: 0
上传时间: 2014-04-01
详细说明: 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 se tRadius(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(false);//该控件不能被编辑 volumeLab=new JLabel("球体体积"); volumeLab.setForeground(new Color(186,141,190)); volumeTextField = new JTextField(12); volumeTextField.setBackground(new Color(253,236,234)); volumeTextField.setEditable(false);//该控件不能被编辑 //TextArea text = new TextArea(10,10); setLayout(new GridLayout(3, 1));//设置3行1列 JPanel radiusJpanel = new JPanel();//球体半径显示面板 radiusJpanel.setLayout(new FlowLayout());//设置组件的布局方式为流型,板上增加的组件默认是按照从左到右顺序排列 radiusJpanel.add(radiusLab); radiusJpanel.add(radiusTextField); //radiusJpanel.add(radiusRang); radiusJpanel.setBackground(new Color(178,170,205)); JPanel areaJpanel = new JPanel();//球体面积显示面板 areaJpanel.setLayout(new FlowLayout());//设置组件的布局方式为流型,板上增加的组件默认是按照从左到右顺序排列 areaJpanel.add(areaLab); areaJpanel.add(areaTextField); areaJpanel.setBackground(new Color(151,222,219)); JPanel volumeJpanel = new JPanel();//球体体积显示面板 volumeJpanel.setLayout(new FlowLayout());//设置组件的布局方式为流型,板上增加的组件默认是按照从左到右顺序排列 volumeJpanel.add(volumeLab); volumeJpanel.add(volumeTextField); volumeJpanel.setBackground(new Color(251,222,219)); add(radiusJpanel); add(areaJpanel); add(volumeJpanel); } @Override public void update(Observable o, Object arg) { Sphere sphere=(Sphere) o; radiusTextField.setText(String.valueOf(sphere.getRadius())); areaTextField.setText(String.valueOf(sphere.getArea())); areaTextField.setEditable(false);//该控件不能被编辑 volumeTextField.setText(String.valueOf(sphere.getVolume())); volumeTextField.setEditable(false);//该控件不能被编辑 // TODO Auto-generated method stub } public void addActionListener(TextController controler) { radiusTextField.addActionListener(controler); } } GraphicsView.java GraphicController.java TextController.java SphereWindow.java等等 ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.