前言

这是我们学院一个专业老师布置的一个作业,当时没有教图形界面编程,老师让我们自学,7天后交作品,规定用php或者java,所以我在周六周日两天复习了java,新学了swing组件,swing现在了解个大概,会用,但是做到精通估计还需要好好研究一番,昨天的时候又研究了一天的exe4j,终于生成可执行文件了,结果eclipse打不开了,后面发现是jdk版本冲突(我下了两个),又搞了一晚上,终于是把问题解决了,因此笔者在这里把代码分享给大家,仅供参考!笔者很菜,心灵脆弱,大佬们求放过~~好的,切入主题

先来张做好的效果图,界面可能有点丑,以上的图片都是百度自己挑的~老师的题意是让我们求三角形,矩形,圆形的面积和周长,首先可以联想到三个类,即圆类(Circular),矩形类(Rectangle)和三角形类(Triangle)以及一个主类(polygon)

圆类

下面对圆类分析,如果知道半径,那么周长,面积都可以搞定,所以圆类里有一个变量:半径,对其封装。之后再在圆类下写出求面积以及周长的函数,圆类代码如下:

package text1;public class Circular {    //圆类private double r;public void setR(double r) {this.r=r;}public double getR() {return r;}public double Area() {  //求面积,去π为3.14return r*r*3.14;}public double Grith() {    //求周长return 2*r*3.14;}
}

矩形类

对于矩形类的话,只需要两个变量即可,也就是长和宽,同样也对其进行封装,然后建立求周长和面积的函数,具体代码如下:

package text1;public class Rectangle {   //矩形类private double a;  //长private double b;    //宽public void seta(double a) {this.a=a;}public double geta() {return a;}public void setb(double b) {this.b=b;}public double getb() {return b;}public double Area() { //求面积return a*b;}public double Grith() {    //求周长return (a+b)*2;}
}

三角形类

对于三角形类,相信大家都熟悉海伦公式吧,有了海伦公式,我们不需要知道三角形的高也可以求出其面积,所以对于该类只需要建立三个变量,即三边的长即可。具体代码如下:

package text1;public class Triangle {private double a;private double b;private double c;public void setA(double a) {this.a=a;}public double getA() {return a;}public void setB(double b) {this.b=b;}public double getB() {return b;}public void setC(double c) {this.c=c;}public double getC() {return c;}public double Area() {double p=(a+b+c)/2;return Math.sqrt(p*(p-a)*(p-b)*(p-c));}public double Grith() {return a+b+c;}
}

做完这些之后,那么接下来的任务就是界面编程啦,java的界面编程需要用到swing组件,对于刚开始学swing组件的注意事项笔者会在文末分享给大家(会用的大佬忽略我)。下面先来介绍一下常用的Swing组件。

组件名称 定义
JButton 代表Swing按钮,按钮中可以带一些图片及文字
JCheckBox 代表Swing中的复选框组件
JComBox 代表下拉表框,可以在下拉显示区域显示多个选项
JFrame 代表Swing的框架类
JDialog 代表Swing版本的对话框
JLabel 代表Swing中的标签组件
JRadioButton 代表Swing的单选按钮
JList 代表能在用户界面中显示的一系列条目的组件
JTextField 代表文本框
JPasswordField 代表密码框
JTextArea 代表Swing中的文本区域
JOptionPane 代表Swing中的一些对话框

因为本文介绍的是那种很简单的界面程序开发,所以不需要全部了解,只需要了解其中的JFrame(必要)、JLabel、JTextField、JButton四个组件以及动作事件监听器(ActionEvent)和布局(本文选用绝对布局)即可。对于JFrame,其实它是一个容器,是Swing程序中各个组件的载体(如果难以理解的话可以这样来想,把JFrame看成是一间没有家具的房间,而其他组件就相当于家具的品牌,当我们买到我们需要的某个品牌的家具时,就把家具运回房间,这就相当于我们需要哪个组件时,就在使用这个组件建立一个对象,然后将这对象添加到容器JFrame中)。对于其它的组件此处不做详细介绍,接下来直接上干货

主程~干货!!!

package text1;import javax.swing.SwingConstants;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.print.DocFlavor.URL;
import javax.swing.*;public class polygon extends JFrame{   //继承JFrame类public polygon () {setTitle("多边形的面积与周长计算");setLayout(null);    //绝对布局setBounds(400,200,660,480);   //设置窗体出现位置以及窗体大小//需要的图片ImageIcon i1 = new ImageIcon("Src/text1/circle.jpg");ImageIcon i2 = new ImageIcon("Src/text1/rectangle.jpg");ImageIcon i3 = new ImageIcon("Src/text1/triangle.jpg");ImageIcon i4 = new ImageIcon("Src/text1/background.jpg");Container c = getContentPane();    //获取一个容器//文本款组件JTextField cr = new JTextField();JTextField ra = new JTextField();JTextField rb = new JTextField();JTextField ta = new JTextField();JTextField tb = new JTextField();JTextField tc = new JTextField();JTextField c_area = new JTextField();JTextField c_grith = new JTextField();JTextField r_area = new JTextField();JTextField r_grith = new JTextField();JTextField t_area = new JTextField();JTextField t_grith = new JTextField();//标签组件JLabel jl1 = new JLabel("圆形");JLabel jl2 = new JLabel("矩形");JLabel jl3 = new JLabel("三角形");JLabel jl4 = new JLabel("请输入圆的半径:");JLabel jl5 = new JLabel("请输入矩形的长:");JLabel jl6 = new JLabel("请输入矩形的宽:");JLabel jl8 = new JLabel("请输入三角形的边长:");JLabel jl9 = new JLabel("请输入三角形的边长:");JLabel jl10 = new JLabel("请输入三角形的边长:");JLabel jl11 = new JLabel("圆的面积为:");JLabel jl12 = new JLabel("圆的周长为:");JLabel jl13 = new JLabel("矩形的面积为:");JLabel jl14 = new JLabel("矩形的周长为:");JLabel jl15 = new JLabel("三角形的面积为:");JLabel jl16 = new JLabel("三角形的周长为:");JLabel bcg = new JLabel();//按钮组件JButton b1 = new JButton("");JButton b2 = new JButton("");JButton b3 = new JButton("");//设置按钮大小b1.setBounds(20, 40, 80, 80);b2.setBounds(20, 160, 80, 80);b3.setBounds(20, 280, 80, 80);//设置图片大小i1.setImage(i1.getImage().getScaledInstance(80, 80, 1000));i2.setImage(i2.getImage().getScaledInstance(80, 80, 1000));i3.setImage(i3.getImage().getScaledInstance(80, 80, 1000));i4.setImage(i4.getImage().getScaledInstance(700, 500, 1000));//将图片绑定到按钮上b1.setIcon(i1);b2.setIcon(i2);b3.setIcon(i3);bcg.setIcon(i4); //此处是将图片绑定到标签上,用做背景图片//设置文本框位置及大小cr.setBounds(230, 70, 80, 20);ra.setBounds(230, 170, 80, 20);rb.setBounds(230, 210, 80, 20);ta.setBounds(230, 280, 80, 20);tb.setBounds(230, 310, 80, 20);tc.setBounds(230, 340, 80, 20);c_area.setBounds(450, 60, 80, 20);c_grith.setBounds(450, 100, 80, 20);r_area.setBounds(450, 170, 80, 20);r_grith.setBounds(450, 210, 80, 20);t_area.setBounds(450, 290, 80, 20);t_grith.setBounds(450, 330, 80, 20);//设置标签位置及大小jl1.setBounds(50, 120, 60, 20);jl2.setBounds(50, 240, 60, 20);jl3.setBounds(40, 360, 60, 20);jl4.setBounds(130, 70, 120, 20);jl5.setBounds(130, 170, 120, 20);jl6.setBounds(130, 210, 120, 20);jl8.setBounds(110, 280, 120, 20);jl9.setBounds(110, 310, 120, 20);jl10.setBounds(110, 340, 120, 20);jl11.setBounds(370, 60, 120, 20);jl12.setBounds(370, 100, 120, 20);jl13.setBounds(360, 170, 120, 20);jl14.setBounds(360, 210, 120, 20);jl15.setBounds(350, 290, 120, 20);jl16.setBounds(350, 330, 120, 20);bcg.setBounds(-20, -10, 700, 500);//将组件加入到容器中c.add(b1);c.add(b2);c.add(b3);c.add(cr);c.add(ra);c.add(rb);c.add(ta);c.add(tb);c.add(tc);c.add(c_area);c.add(c_grith);c.add(r_area);c.add(r_grith);c.add(t_area);c.add(t_grith);c.add(jl1);c.add(jl2);c.add(jl3);c.add(jl4);c.add(jl5);c.add(jl6);c.add(jl8);c.add(jl9);c.add(jl10);c.add(jl11);c.add(jl12);c.add(jl13);c.add(jl14);c.add(jl15);c.add(jl16);c.add(bcg);//动作监听器,为按钮b1添加鼠标单击事件b1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {Circular circular = new Circular();   //建立圆类对象String crs = cr.getText(); //获取文本框cr中的内容circular.setR(Double.parseDouble(crs));    //将crs转换成浮点型并赋值给半径c_area.setText(String.format("%.6f",circular.Area()));  //求出半径并保留6位小数,再在文本款c_area中显示c_grith.setText(String.format("%.6f",circular.Grith()));   //同上}});//为按钮b2添加鼠标单击事件b2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {Rectangle rectangle = new Rectangle();String rec_a = ra.getText();String rec_b = rb.getText();rectangle.seta(Double.parseDouble(rec_a));rectangle.setb(Double.parseDouble(rec_b));r_area.setText(String.format("%.6f", rectangle.Area()));r_grith.setText(String.format("%.6f", rectangle.Grith()));}});//为按钮b3添加鼠标单击事件b3.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {Triangle triangle = new Triangle();String tri_a = ta.getText();String tri_b = tb.getText();String tri_c = tc.getText();triangle.setA(Double.parseDouble(tri_a));triangle.setB(Double.parseDouble(tri_b));triangle.setC(Double.parseDouble(tri_c));t_area.setText(String.format("%.6f",triangle.Area()));t_grith.setText(String.format("%.6f",triangle.Grith()));}});setVisible(true);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {// TODO Auto-generated method stubnew polygon(); //实例化}}

完成之后用exe4j生成可执行文件即可

写在最后,关于初学Swing的感谢

对于一个没有了解过swing的小白来说,刚学起来是比较吃力的(天才除外),因为突然就会有大量的知识量涌入你的脑内,但是请不要放弃,你感到头疼是因为你在进步,你在接受新的东西,刚开始学的时候建议多敲代码,多揣摩,多领会,最后祝读到这的你有朝一日成为你想成为的人!谢谢你的观看

【干货干货!内附源码】多边形的面积及周长计算~java Swing开发可视化小程序,exe4j打包成exe可执行文件相关推荐

  1. [附源码]计算机毕业设计Python+uniapp美年大健康体检预约小程序mv0vt(程序+lw+远程部署)

    [附源码]计算机毕业设计Python+uniapp美年大健康体检预约小程序mv0vt(程序+lw+远程部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Pyt ...

  2. [附源码]计算机毕业设计Python+uniapp美年大健康体检预约小程序q237e(程序+lw+远程部署)

    [附源码]计算机毕业设计Python+uniapp美年大健康体检预约小程序q237e(程序+lw+远程部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Pyt ...

  3. web python 自动化是什么_Selenium 凭什么成为 Web 自动化测试的首选?(内附源码)...

    原标题:Selenium 凭什么成为 Web 自动化测试的首选?(内附源码) 自动化 · 工具 1.QTP QTP是一个商业化的功能测试工具,收费,支持web,桌面自动化测试. 2. Selenium ...

  4. Selenium 凭什么成为 Web 自动化测试的首选?(内附源码)

    <自动化>工具 1.QTP QTP是一个商业化的功能测试工具,收费,支持web,桌面自动化测试. 2. Selenium(文章重点讲) Selenium是一个开源的web自动化测试工具,免 ...

  5. CTP接口开发案例(内附源码)

    CTP接口开发(内附源码) 提示:在看本博客之前建议先阅读上期所官方的开发文档(SimNow官网中去下载CTP接口文件),然后在SimNow官网注册模拟账号. 提示:股票CTP接口和期货CTP接口类似 ...

  6. wallpaper代码_五行Python代码自动换你的电脑桌面壁纸(内附源码和exe)

    很多行友问行哥,Python能不能自动更换电脑壁纸呀,今天它来了 只需要一行代码,指定图片地址即可更换电脑桌面.加上壁纸文件夹路径,让你随机更换电脑桌面,带来不期而遇的新鲜.使用爬虫技术,自动下载壁纸 ...

  7. 高分毕设基于JAVA的仓库管理系统项目(内附源码)

    一.高分毕设基于JAVA的仓库管理系统项目(内附源码) 项目简介:(源码免费下载链接如下) 基于JAVA的仓库管理系统项目源码.zip-Java文档类资源-CSDN下载 在经过多家公司上线运行后,为了 ...

  8. Babylonjs 最全demo集合 (内附源码)

    Babylonjs 最全demo集合 (内附源码) 为了方便学习Babylonjs引擎,整理了130多个示例,并且所有的例子全部本地化了,可以离线部署.以后会分别讲解. 一.源码模块介绍 Animat ...

  9. [附源码]计算机毕业设计Python+uniapp基于安卓的校园跑腿代购476ww(程序+lw+APP+远程部署)

    [附源码]计算机毕业设计Python+uniapp基于安卓的校园跑腿代购476ww(程序+lw+APP+远程部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: ...

  10. [附源码]计算机毕业设计Python+uniapp基于Android的大学生健康管理APPo1q3h(程序+源码+LW+远程部署)

    [附源码]计算机毕业设计Python+uniapp基于Android的大学生健康管理APPo1q3h(程序+源码+LW+远程部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目 ...

最新文章

  1. c语言向表格内存入数据,怎么实现横向到存入多个单元格,在列数固定的报表中逐格横向填充数据并折行...
  2. Android开发之动态库调用
  3. Storm单节点部署及启动
  4. java线程6种状态转换,java6种线程状态
  5. Android开发之自定义菊花进度条对话框
  6. 10 个 PHP 常见安全问题(实例讲解)
  7. Java的break和continue关键字
  8. KnockoutJS 实例
  9. SolidWorks.2020.SP5.0软件下载
  10. 让WIN2003和2008服务器iis支持安卓应用.apk文件下载的配置方法
  11. js json stringify
  12. 怎样才能让datetime字段去掉最后面的小时、分、秒
  13. nofollow能否禁止爬虫爬取
  14. 优化设计——多目标函数优化(降维/主目标法、线性加权法、理想点法)——MATLAB编程
  15. 多项式定理 matlab,泊松定理卡方分布及多项式拟合的MATLAB实现.pdf
  16. 可迁移注意力攻击(TAA)
  17. 在安卓手机上运用AidLux实现人流检测数据统计
  18. redis slow log采集
  19. ES analyzer和search_analyzer的比较
  20. 如何将Mindjet的宏放到自定义功能区

热门文章

  1. Cesium资料汇总
  2. 利用正则匹配连续重复的字符:\1
  3. 2017年sfdc工作总结_Schema Builder
  4. Self-Supervised Learning 自监督学习中Pretext task的理解
  5. ps计算机设置,做着ps电脑卡了怎么办 试试设置这四项
  6. 最全的熬粥方法Word计算机考试怎么做,煮粥方法大全(珍藏版)
  7. vue 自动打开浏览器
  8. matlab——整数规划
  9. VMware14 kali linux安装教程
  10. Facebook和Ins即将推出NFT项目?Meta的元宇宙计划实现ing