这是本学期开学的第一个作业,设计图形界面,实现圆形、矩形、三角形的周长和面积计算,要求涉及抽象、封装、继承、多态的知识点,并且每个图形在计算时都有自己的界面。由于不是专业学java的,代码写的简单粗暴,界面也做的比较丑,仅供参考*-*。

先放上代码运行结果(有点花里胡哨):

下面是代码实现:

将图形抽象成一个类shapes作为父类,在里面定义计算周长和面积的方法,其他图形直接调用(继承)父类的方法进行实现,这样就同时涉及了抽象、封装、继承、多态的知识。

package Frame;
//图形父类
public abstract class shapes {abstract double perimeterCalculation();     //计算周长的方法abstract double areaCalculation();          //计算面积的方法
}
package Frame;
//子类圆形
import javax.swing.JLabel;
public class cricular extends shapes{    //继承父类shapesdouble radius;cricular(double radius){this.radius=radius;}public cricular(JLabel labName1) {// TODO Auto-generated constructor stub}double perimeterCalculation(){     //重写方法,实现多态return (2*radius*3.14);}double areaCalculation(){return (radius*radius*3.14);    //重写方法,实现多态}
}
package Frame;
//子类矩形
import javax.swing.JLabel;
public class rectangles extends shapes{   //继承父类shapesdouble edge1,edge2;rectangles(double edge1,double edge2){this.edge1=edge1;this.edge2=edge2;}public rectangles(JLabel labName1) {// TODO Auto-generated constructor stub}double perimeterCalculation(){return (2*edge1+2*edge2);}double areaCalculation(){return (edge1*edge2);}
}
package Frame;
import javax.swing.JLabel;
public class triangles extends shapes{     //继承父类double edg1,edg2,edg3;triangles(double edg1,double edg2,double edg3){this.edg1 = edg1;this.edg2 = edg2;this.edg3 = edg3;}public triangles(JLabel labName1) {// TODO Auto-generated constructor stub}double perimeterCalculation(){double s = (edg1 + edg2 + edg3) / 2;return (Math.sqrt(s*(s-edg1)*(s-edg2)*(s-edg3)));   //海伦公式,只需要知道三角形的三条边就能计算面积}double areaCalculation(){return (edg1 + edg2 + edg3);}
}

下面是主界面代码:

public static void main(String[] args) {// TODO Auto-generated method stubJFrame frame = new JFrame();frame.setTitle("计算图形的面积和周长");frame.setBounds(400,200,600,400);frame.setLayout(null);JLabel l = new JLabel("请选择图形");l.setBounds(150, 20, 150, 30);JLabel l1 = new JLabel();    //Label控件,用于绑定背景图片,使得整个图片平铺在窗体上l1.setBounds(0, 0, 420, 320);frame.setSize(420, 320);//需要的图片ImageIcon i1 = new ImageIcon("D:/TIM图片20200304215114.jpg");i1.setImage(i1.getImage().getScaledInstance(420, 320, 1000));     l1.setIcon(i1);//设置按钮JButton btn1 = new JButton("圆形");JButton btn2 = new JButton("矩形");JButton btn3 = new JButton("三角形");btn1.setBounds(120, 60, 120, 50);btn2.setBounds(120, 130, 120, 50);btn3.setBounds(120, 200, 120, 50);//将按钮添加到窗口frame.add(btn1);frame.add(btn2);frame.add(btn3);frame.add(l);frame.add(l1);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);          //将窗口显现出来,改成false,运行后将看不到窗口

计算圆形时的窗口:

//圆形btn1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubJFrame frame1 = new JFrame();frame1.setLayout(null);    //frame1是指圆形这个窗口,矩形、三角形的窗口就不能再用同样的名字,可以改成frame2,frame3之类的frame1.setSize(500, 300);frame1.setTitle("计算圆形的面积和周长");frame1.setBounds(500,400,500,300);//设置背景图片ImageIcon img = new ImageIcon("D:/101.jpg");   //这样设置的背景图不会平铺整个窗口,会根据窗口大小截取部分作为背景JLabel L2 = new JLabel(img);     frame1.getLayeredPane().setLayout(null);L2.setBounds(0,0,500,300);frame1.getLayeredPane().add(L2);//设置面板JPanel panel = new JPanel();JPanel panel1 = new JPanel();JPanel panel2 = new JPanel();JPanel panel3 = new JPanel();//设置面板的尺寸和位置panel1.setSize(400, 200);panel2.setSize(400, 200);panel3.setSize(400, 200);panel1.setLocation(55,30);panel2.setLocation(55,130);panel3.setLocation(55,180);  //设置标签的字体、大小、位置JLabel labName1 = new JLabel("请输入圆的半径:",SwingConstants.LEFT);Font font = new Font("宋体",Font.PLAIN, 15);labName1.setFont(font);JLabel labName2 = new JLabel("圆形的周长:",SwingConstants.LEFT);labName2.setFont(font);JLabel labName3 = new JLabel("圆形的面积:",SwingConstants.LEFT);labName3.setFont(font);labName1.setBounds(10,30,150,50);L2.add(labName1);labName2.setBounds(20,130,150,50);L2.add(labName2);labName3.setBounds(20,180,150,50);L2.add(labName3);//创建文本框JTextField textField1 = new JTextField(15);JTextField textField2 = new JTextField(15);JTextField textField3 = new JTextField(15);textField1.setFont(new Font(null,Font.PLAIN, 20));textField2.setFont(new Font(null,Font.PLAIN, 20));textField3.setFont(new Font(null,Font.PLAIN, 20));panel1.add(textField1);panel.add(panel1);panel2.add(textField2);panel.add(panel2);panel3.add(textField3);panel.add(panel3);//panel.add(panel1);panel.setVisible(true);//创建按钮JButton btn21 = new JButton("计算");JButton btn23 = new JButton("清空");btn21.setBounds(140, 85, 80, 30);btn23.setBounds(290, 85, 80, 30);panel.add(btn21);panel.add(btn23);panel.setLayout(null);             panel.setOpaque(false);frame1.setContentPane(panel);frame1.setVisible(true);//按钮btn21鼠标单击事件                             btn21.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0) {;double crs = Double.parseDouble(textField1.getText());cricular cricularobject = new cricular(crs);textField2.setText(String.format("%.2f",cricularobject.perimeterCalculation()));textField3.setText(String.format("%.2f",cricularobject.areaCalculation()));}});//按钮btn23鼠标单击事件btn23.addActionListener(ee -> {textField1.setText("");textField2.setText("");textField3.setText("");});}});

矩形、三角形的窗口代码跟圆形的差不多,就不再赘述,只需要多添加一至两个Label标签和TextField标签并实现即可。

第一次发博客,小蒟蒻一个,代码有不足的地方还请大佬指点orz.

java图形界面设计——求三角形的面积相关推荐

  1. java 图形界面设计,使用JPanel、JFrame 绘图,图形界面设计入门演示,各种主要绘图方法以及图片、文字插入

    那什么是JPanel?JFrame 又是什么呢?让我们先来了解一下他们的区别吧: JFrame是最底层,JPanel是置于其面上,同一个界面只有一个JFrame,一个JFrame可以放多个JPanel ...

  2. JAVA图形界面设计

    图形界面设计 1 Java Swing 概述 图形化界面(Graphics User Interface,GUI)是指采用图形方式显示的计算机操作用户界面. 通过图形化界面,用户和程序之间可以方便地进 ...

  3. java转成图形界面_【转】java图形界面设计(AWT)

    [转自]http://blog.sina.com.cn/s/blog_616e189f0100ne1t.html 1.       基本的java Frame操作. Java的图形界面的类主要包括AW ...

  4. java图形界面设计 swing之JTable表格的创建使用-添加鼠标监听

    最近用java设计了一个桌面管理系统, 在数据展示模块的时候遇到了一点问题,找不到好的展示方式 最后发现了JTable这个类, 主要涉及这个类的构造与使用 注意:JTable都需要在JScrollPa ...

  5. Java图形界面设计——substance皮肤

    2019独角兽企业重金招聘Python工程师标准>>> 先看一段代码吧. Java代码   public class LAF_Local_1 extends javax.swing. ...

  6. java图形界面设计代码_Java图形界面设计

    一.总述 Java的图形用户界面由各种组件(component)构成,它们主要位于java.awt包与javax.swing包中.Swing与AWT最大的不同是,Swing在实现时,不包含任何本地代码 ...

  7. 保洁阿姨看完都会了!java图形界面设计代码

    二.解析 1. 硬件层的并发优化基础知识 存储器的层次结构图如下: 各级缓存耗时对比: 采用分层缓存的层次结构会带来数据不一致问题,如下图: 那么如何保证数据的一致性,现代CPU处理办法有两种: (1 ...

  8. JAVA-关于计算器的简单图形界面设计例子(不实现功能)

    对于刚刚学习JAVA的小伙伴们来说,对图形界面设计肯定不陌生,我们可以利用javax.swing类库来进行图形界面的简单设计. 下面我们用JAVA图形界面设计的相关基础知识来实现一个简易计算器的界面( ...

  9. java编写程序实现求三角形、正方形和圆的面积

    java编写程序实现求三角形.正方形和圆的面积,要求先设计一个公共的父类,在其中·定义求面积的方法,再继承得到各种形状 package practice3; abstract class shape{ ...

最新文章

  1. 《ASP.NET办公自动化系统开发实例导航》笔记一
  2. 微信小程序码buffer转为图片php,微信小程序将网络图片转成base64数据
  3. const 和指针赋值
  4. android 过滤cmcc,Android 无法通过cmcc wap2.0 test解决
  5. boost::mp11::mp_identity_t相关用法的测试程序
  6. Web前端文档阅读笔记-vis.js在vue cli中的使用
  7. 基于虚拟账号的邮件系统之×××
  8. visual studio code无法连接网络,五种方法
  9. eclipse出现String错误,问题已解决
  10. win11在dev渠道升级怎么保留原来的文件 windows11渠道升级保留原文件的方法步骤
  11. DevExpress 创建EXCEL
  12. xuperchain 事件订阅 判断交易是否上链 交易状态
  13. SPICAN通信协议简介
  14. mysql内连接去重复_MYSQL 内连接查询重复
  15. 1、结构化、面向对象程序设计差别、类基本概念
  16. SecureCRT 64位 破解版v8.1.4及安装
  17. 随机中文姓名 php,PHP生成随机中文姓名 阿星小栈
  18. python:实现newton_forward_interpolation牛顿前插算法(附完整源码)
  19. 子平真诠释疑笔记(六)
  20. 《HelloGitHub》第 48 期

热门文章

  1. webpack中配置vue
  2. python中的get
  3. 谷粒商城 集群篇 (四) --------- KubeSphere
  4. 任何一个编程序的软件,配置vpn网络环境要点
  5. 有想象力的故事 More Story Less Theory
  6. 绝地求生2月26服务器维护吗,绝地求生2月26日维护更新内容 绝地求生2月26日更新了什么...
  7. sklearn tsne
  8. Vue3.0引入Jquery
  9. R语言 shiny——通过actionButton与reactive设置初始值
  10. 如何在脚本中输入密码 linux,如何在shell脚本中为用户分配密码