题目要求

设计如下

  • 思路

整体布局采用GridLayout的方式,将界面分为3行,一列(GridLayout(3,1)),顶部布局采用GridLayout(2,2)的方式,包含JLabel标签作为提示,及JTextField输入框。中间布局采用GridLayout(1,2),包含JLabel标签和JTextField,且JTextField不允许用户输入。底部布局采用FlowLayout的方式,包含一个JButton控件。
  做一个Rectangle的封装类,含有length和width两个属性,有三个方法:设置length和width,输出周长,输出面积。
  给Button添加监听事件,用户未输入数据或输入的数据不完整,监听事件可以直接判断出来,在结果框里显示“请输入数据!”,若输入完整,则在监听事件内给Rectangle类进行赋值后调用Rectangle的周长面积函数来输出。

  • 源代码
package GUItest;import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class experiment {public static class Rectangle{//封装的矩形类private double length;private double width;public void setlandw(double l,double w){length = l;width = w;}public double perimeter(){return (length+width)*2;}public double area(){return length*width;}}public static class Frame extends JFrame {//定义三个布局private JPanel paneltop = new JPanel();private JPanel panelmiddle = new JPanel();private JPanel panelbottom = new JPanel();//定义GUI中要用到的组件private JLabel labellength = new JLabel("长度:");private JLabel labelwidth = new JLabel("宽度:");private JTextField textlength = new JTextField();private JTextField textwidth = new JTextField();private JLabel labelresult = new JLabel("结果:");private JTextField textresult = new JTextField();private JButton button = new JButton("求值");// 写监听事件public class Mybuttonlistener implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubString l = textlength.getText();//获取两个单行文本中的内容String w = textwidth.getText();double length = Double.parseDouble(l);double width = Double.parseDouble(w);if(l.isEmpty()||w.isEmpty()){//如果未输入完整则要求输入数据textresult.setText("请输入正确数据!");}else{Rectangle rectangle = new Rectangle();rectangle.setlandw(length,width);textresult.setText("周长为:"+rectangle.perimeter()+"面积为:"+rectangle.area());}            }}//构造函数Frame() {setTitle("计算矩形的周长和面积");setSize(500, 200);setLocation(400, 400);// 整体布局setLayout(new GridLayout(3, 1));add(paneltop);add(panelmiddle);add(panelbottom);// 顶部布局paneltop.setLayout(new GridLayout(2, 2));paneltop.add(labellength);paneltop.add(textlength);paneltop.add(labelwidth);paneltop.add(textwidth);// 中间布局panelmiddle.setLayout(new GridLayout(1, 2));panelmiddle.add(labelresult);panelmiddle.add(textresult);textresult.setEditable(false);// 底部布局panelbottom.setLayout(new FlowLayout());panelbottom.add(button);button.addActionListener(new Mybuttonlistener());setVisible(true);}}public static void main(String[] args){Frame frame = new Frame();}
}
  • 测试数据
    测试1:

    测试2:

    测试3:
  • 小结

通过这个GUI实验,我理解最多的就是控制文本区域的禁止输入使用setEditable(false);在文本区域输出东西使用setText(“内容”)函数。以及监听事件的具体使用,使用监听事件时候要注意重载,要不然程序就会报错。

【Java程序设计】GUI程序设计(设计封装矩形类、利用监听事件对textField进行读取和输入)相关推荐

  1. 设计一个矩形类,完成计算矩形面积和显示矩形属性的功能。

    / /* [基本题]设计一个矩形类,完成计算矩形面积和显示矩形属性的功能. */ #include<iostream> using namespace std; class Retangl ...

  2. [java/初学者/GUI编程]GUI界面设计——界面组件类

     前言 GUI,即图形用户界面,其英文全称是Graphics User Interface. 它是基于图形的界面,windows就是一个图形用户界面的操作系统,而DOS是基于命令提示符的操作系统,GU ...

  3. 设计一个矩形类rectangle_万字长文带你捋清六种设计模式的设计原则(建议收藏)...

    对于设计模式,自己很早之前就看了好多本设计模式书籍,其中一些还看了好几遍,也一直希望自己能在编码的时候把这些设计模式用上去.可是,在日常的打码中,用的最多的就是单例,其次是观察者和建造者模式 ( bu ...

  4. Java基础 接口实现 设计一个形状类(接口)Shape,方法:求周长和求面积

    题目: 设计一个形状类(接口)Shape,方法:求周长和求面积形状类(接口)的子类(实现类);:Rect(矩形),Circle(圆形)Rect类的子类:Square(正方形)不同的子类会有不同的计算周 ...

  5. JAVA实验二:设计一个教师类Teacher(属于cn.net.sdkd包)实现接口进行排序等

    设计一个教师类Teacher(属于cn.net.sdkd包) (1)属性有编号(int no).姓名(String name).年龄(int age).所属学院(String seminary),为这 ...

  6. java swing(GUI图形化界面)基础教程3-添加事件监听1

    学习此内容前建议先去学习java基础知识: 匿名内部类 (学的多的可以用lambda表达式,更加简便) 好, 我们先看一下之前的代码(即一个窗口和一个按钮) 如果想看详细内容,链接为: (23条消息) ...

  7. 长方形Java代码_编写java代码实现一个计数器类c设计一矩形类rectangular,提供计算矩形周长和面积等方法。...

    栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线形表. 栈是一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据( ...

  8. 6-25 设计一个矩形类Rectangle

    设计一个名为Rectangle的类表示矩形.这个类包括: 两个名为width和height的double型数据域,它们分别表示矩形的宽和高.width和height的默认值都为1. 一个无参构造方法. ...

  9. 设计一个矩形类rectangle_使用Python super()为您的类增强

    虽然Python不仅仅是一种面向对象的语言,但它足够灵活,功能强大,足以让您使用面向对象的范例构建应用程序.Python实现这一目标的方法之一是支持继承,它与之相关super(). 在本教程中,您将了 ...

最新文章

  1. 双线服务器和CDN的区别
  2. postgresql日常操作命令
  3. 区块链系列教程之:比特币的世界
  4. Leetcode--188. 买卖股票的最佳时机Ⅳ
  5. Linux中的文件权限
  6. sql语句中用select语句查询值大于平均值的情况
  7. 程序员,如何在工作之外,增加自己的收入?
  8. mockito 外部接口_原创 |使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (五)第一个单元测试...
  9. nginx proxy_pass cannot have URI part in location given by regular expression
  10. cocos creator 游戏框架
  11. 【源码】MATLAB的专业绘图工具
  12. HTTP协议和APACHE
  13. 日分发量破8.6亿,OPPO如何帮助开发者突破流量增长瓶颈
  14. RedHat9.0红帽子LIUNX
  15. Hadoop能做什么
  16. php如果实现日历的制作,教你如何制作一个简单的PHP日历
  17. 关于mklink的/D /J 区别
  18. 【HAL库】STM32CubeMX开发----STM32F103/F207/F407----时钟配置
  19. arcgis中欧氏距离操作_ArcGIS教程:欧氏距离 (空间分析)
  20. 项目管理—执行和变更流程

热门文章

  1. 程序自动化 linux_自动化Windows子系统Linux安装程序
  2. linux pdf 笔记软件,可以编辑在PDF上做笔记的笔记软件:Xournal
  3. ppgs_extractor_10ms_sch_lh_xx封装接口
  4. 华为、联想:外媒眼中的“中国制造”
  5. 厦大2021级期末上机考试
  6. 提升项目经理的有效路径之一:学习PMP项目管理
  7. Servlet什么时候实例化?destory到底摧毁的是什么?
  8. JAVA:不使用第三个变量,交换两个变量的值
  9. 神兵利器——使用LINQ to SQL检索和操作数据库
  10. ale插件 vim_vim ale插件详情