### Java 实现绘制矩形和椭圆并计算面积与周长 #### 一、概述 在Java编程中,可以通过Swing或AWT等图形用户界面工具包来实现图形的绘制功能。本文档介绍了一个简单的Java应用程序,该程序允许用户通过输入矩形或椭圆的尺寸(长度和宽度),然后计算并显示所选图形的面积和周长,并在窗口中绘制出该图形。 #### 二、关键组件解析 1. **PCJFrame 类**:这是程序的核心类,继承自`JFrame`,实现了`ActionListener`接口。 2. **ButtonGroup 和 JRadioButton**:用于选择绘制矩形或椭圆。 3. **JTextField**:用于输入长度和宽度。 4. **RectangleCanvas 和 EllipseCanvas**:这两个类分别负责绘制矩形和椭圆。 #### 三、代码解析 ##### 1. **PCJFrame 构造函数** ```java public PCJFrame() { // 设置窗口属性 super("绘制平面图形并计算周长和面积"); this.setSize(600, 300); this.setLocation(200, 100); this.setBackground(Color.white); this.setDefaultCloseOperation(EXIT_ON_CLOSE); // 创建控件面板 JPanel panel1 = new JPanel(new FlowLayout(1)); this.getContentPane().add(panel1, "North"); // 创建按钮组和单选按钮 ButtonGroup bgroup = new ButtonGroup(); radio_Rec = new JRadioButton("矩形", true); panel1.add(radio_Rec); bgroup.add(radio_Rec); radio_Ell = new JRadioButton("椭圆", false); panel1.add(radio_Ell); bgroup.add(radio_Ell); // 输入框 panel1.add(new Label("长度/长轴")); text_length = new JTextField(10); panel1.add(text_length); panel1.add(new Label("宽度/短轴")); text_width = new JTextField(10); panel1.add(text_width); // 绘图按钮 button_paint = new JButton("绘图"); button_paint.addActionListener(this); panel1.add(button_paint); // 结果显示面板 JPanel panel2 = new JPanel(new FlowLayout(1)); this.getContentPane().add(panel2, "South"); text_perimeter = new JTextField(20); panel2.add(new Label("周长")); panel2.add(text_perimeter); text_area = new JTextField(20); panel2.add(new Label("面积")); panel2.add(text_area); this.setVisible(true); } ``` ##### 2. **actionPerformed 方法** ```java public void actionPerformed(ActionEvent e) { double length = Double.parseDouble(text_length.getText()); double width = Double.parseDouble(text_width.getText()); l = (int) length; w = (int) width; // 移除已有的图形 if (Rectangle != null) { getContentPane().remove(Rectangle); } if (Ellipse != null) { getContentPane().remove(Ellipse); } // 创建新的图形对象 Rectangle = new RectangleCanvas(l, w); Ellipse = new EllipseCanvas(l, w); // 绘制并计算 if (length > 0 && width > 0) { if (e.getSource() == button_paint) { if (radio_Rec.isSelected()) { // 绘制矩形 drawRectangle(); } else if (radio_Ell.isSelected()) { // 绘制椭圆 drawEllipse(); } // 计算并显示结果 updateResults(); } } } ``` #### 四、图形绘制与计算 1. **RectangleCanvas 类**:这个类负责绘制矩形,并计算其周长和面积。 2. **EllipseCanvas 类**:这个类负责绘制椭圆,并计算其周长和面积。 这些类通常会重写`paintComponent`方法来自定义绘图逻辑,并且可能会包含计算图形周长和面积的方法。 #### 五、总结 该Java程序提供了一个直观的方式让用户输入图形的尺寸,并即时显示所选图形的绘制效果及面积、周长等计算结果。通过使用Swing库中的组件,程序能够构建一个友好的用户界面。此外,通过创建专门的`RectangleCanvas`和`EllipseCanvas`类来处理图形的绘制和计算,程序的结构清晰,易于扩展和维护。
- 粉丝: 30
- 资源: 5万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 社区二手物品交易小程序ssm.zip
- 基于java+springboot+mysql+微信小程序的图书馆座位预约系统 源码+数据库+论文(高分毕业设计).zip
- “返家乡”高校暑期社会实践微信小程序设计与开发ssm.zip
- 校园失物招领小程序ssm.zip
- 基于小程序的社区超市管理系统springboot.zip
- 基于java+springboot+mysql+微信小程序的微信小程序的居民健康监测系统 源码+数据库+论文(高分毕业设计).zip
- 基于java+springboot+mysql+微信小程序的网上花店微信小程序 源码+数据库+论文(高分毕业设计).zip
- 校园反诈骗微信小程序的设计与开发ssm.zip
- 高校学生事务管理系统ssm.zip
- 健身达人微信小程序的设计与实现ssm.zip
- 发布.zip
- 基于微信小程序的电影院订票选座系统ssm.zip
- 基于微信平台的文玩销售小程序ssm.zip
- 基于微信小程序的教学质量评价系统ssm.zip
- 澡堂预订的微信小程序的设计和利用ssm.zip
- 微信小程序软件缺陷管理系统ssm.zip