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

  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;
		else
			 isTriangle=false;
	}
	public void setB(double b){
		sideB=b;
		if(sideA+sideB>sideC&&sideA+sideC>sideB&&sideC+sideB>sideA)
        isTriangle=true;
		else
			 isTriangle=false;
	}
	public void setC(double c){
		sideC=c;
		if(sideA+sideB>sideC&&sideA+sideC>sideB&&sideC+sideB>sideA)
        isTriangle=true;
		else
			 isTriangle=false;
	}
}
运行结果




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值