java创建内部面板类_Java图形与文本(18)
实例018 旋转图形
实例说明
本实例演示在Java中绘制图形时,如何对图形进行旋转。运行程序,单击窗体上的“顺时针”按钮,可以将图形顺时针旋转,效果如图1.18所示,用户还可以通过单击“逆时针”和“还原”按钮,对窗体上的图形进行逆时针旋转和还原等操作。
关键技术
本实例主要是通过在JPanel类的子类中,重写JComponent类的paint()方法,并在该方法中使用Graphics2D类的rotate()方法来实现的。
使用Graphics2D类的rotate()方法,可以实现图形的旋转,该方法的定义如下:
public abstract void rotate(double theta, double x, double y)
参数说明
? theta:旋转的角度,以弧度为单位。
? x:旋转原点的x坐标。
w y:旋转原点的y坐标。
设计过程
(1)新建一个项目。
(2)在项目中创建一个继承JFrame类的RotateShapeFrame窗体类。
(3)在RotateShapeFrame窗体类中,创建内部面板类RotateShapePanel,并重写JComponent类的paint()方法,在该方法中使用Graphics2D类的rotate()方法旋转图形。
(4)将内部面板类RotateShapePanel的实例,添加到窗体类RotateShapeFrame的内容面板上,用于在窗体上显示旋转后的图形,代码如下:
class RotateShapePanel extends JPanel { // 创建内部面板类
public void paint(Graphics g) { // 重写paint()方法
Graphics2D g2 = (Graphics2D) g; // 获得Graphics2D对象
Rectangle2D.Float rect = new Rectangle2D.Float(40, 40, 80, 50); // 创建矩形对象
BasicStroke stroke = new BasicStroke(10); // 创建宽度是10的笔画对象
g2.setStroke(stroke); // 设置笔画对象
g2.clearRect(0, 0, 338, 220); // 清除原有内容
if (flag == 0) {
g2.draw(rect); // 绘制原矩形
} else if (flag == 1) {
g2.rotate(rotateValue); // 顺时针旋转
g2.draw(rect); // 绘制矩形
} else if (flag == 2) {
g2.rotate(rotateValue); // 逆时针旋转
g2.draw(rect); // 绘制矩形
}
}
}
U 注意:上面代码中的flag是一个标记变量,当该变量的值为0时,图形还原到原来的位置;为1时,对图形进行顺时针旋转;为2时,对图形进行逆时针旋转。rotateValue是与需要旋转角度对应的弧度值。
秘笈心法
心法领悟018:角度转换为弧度。
由于使用Graphics2D类的rotate()方法旋转图形时,是按弧度进行旋转的,因此,当给定的旋转值是角度时,需要将其转换为弧度。在Java中,可以使用Math类的toRadians(double angdeg)方法,将参数指定的角度angdeg转换为近似相等的弧度值。
java创建内部面板类_Java图形与文本(18)相关推荐
- java创建内部面板类_java-RGB调色面板的实现(事件监听器之匿名内部类)
题目要求: **要求写一个案例,使用三个JSlider分别选取R.G.B三原色的值,用户可以通过活动JSlider的滑块来动态的合成一种颜色,合成的颜色显示在界面上.** 代码思路解析: 1.所需要的 ...
- java 创建学生信息类_java定义一个表示学生信息的类
展开全部 public class Student { /* * (non-Javadoc) * * @32313133353236313431303231363533e4b893e5b19e3133 ...
- Java 创建用户异常类、将异常一直向上抛、 throw和throws的区别
Java 创建用户异常类.将异常一直向上抛. throw和throws的区别 参考文章: (1)Java 创建用户异常类.将异常一直向上抛. throw和throws的区别 (2)https://ww ...
- java订单类_基于Java创建一个订单类代码实例
这篇文章主要介绍了基于Java创建一个订单类代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需求描述 定义一个类,描述订单信息 订单id 订 ...
- java订单类_使用Java创建一个订单类代码实例
这篇文章主要简介了使用Java创建一个订单类代码实例,文中通过示例代码简介的非常具体,对大家的学习或者工作具有一定的参考学习网上卖,需要的朋友可以学习下 需求描述 定义一个类,描述订单信息 订单id ...
- java如何创建一个dao类_java – 如何设计一个DAO类?
应该是什么是设计DAO类的最佳方式? 方法#1:将DAO类设计为对象. class Customer { //customer class } class CustomerDAO { public v ...
- java枚举和枚举类_Java枚举:您拥有优雅,优雅和力量,这就是我所爱!
java枚举和枚举类 当Java 8即将面世时,您确定您对Java 5中引入的枚举很熟悉吗? Java枚举仍然被低估了,很可惜,因为它们比您想象的要有用,它们不仅仅用于通常的枚举常量! Java枚举是 ...
- java常见不可变类_Java语言不可变类的诀窍
示例 不可变对象是状态无法更改的对象.不可变类是其实例根据设计和实现是不可变的类.作为不可变性示例最常见的Java类是java.lang.String. 以下是陈规定型的示例: public fina ...
- java 反射获取实体类_Java 通过反射给实体类赋值操作
表单提交这个方法是挺方便的,但在java来说就显得有些麻烦了, 怎么个麻烦呢,就是当你字段多的时候,你就得一个一个的获取其对应的值,这样代码量就多了起来,其代码量不说,维护也是一个问题. 所以就有了这 ...
- java程序 构建mycircle类_Java语言程序设计(十九)对象和类的应用实例
1.我们定义一个Circle类并使用该类创建对象,我们创建三个圆对象,1.0,25和125,然后显示这三个圆的半径和面积,将第二个对象的半径改为100,然后显示它的新半径和面积.程序清单如下: pac ...
最新文章
- The current directory must be set to the ITT directory解决办法
- [python skill]利用python计算T分布下的置信区间
- python字符串的冒泡排序_如何实现python冒泡排序算法?
- golang 结构体 slice 排序
- 【机器学习】传统目标检测算法之DPM
- mac hosts文件已锁定无法修改怎么办?hosts修改权限设置教程
- Ubuntu E: 无法获得锁 /var/lib/dpkg/lock - open
- CSS基础必备知识点01
- python正则表达式代码_python正则表达式的使用(实验代码)
- python模块调用模块_Python模块调用
- mysql事务隔离级别回顾
- AI算法 - 粒子滤波
- js如何获取计算机当前时间,js获取当前系统时间实例代码
- std::stack使用总结
- 什么是REST风格? 什么是RESTFUL?(一篇全读懂)
- 年龄怎么用计算机算,年龄计算器
- Android DES加密解密
- mysql逗号后update_隔mysql逗号
- 超宽屏幕比例_选择合适的21:9超宽带鱼屏屏幕(普通屏幕也可)
- 微信小程序 | 基于ChatGPT实现电影推荐小程序
热门文章
- 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
- GDBT、AdaBoost、XGBoost提升算法解析
- Tensorflow训练mnist数据集源代码解析
- Unity 阴影的制作方式
- 【测试篇】为什么需要测试
- if...else 应用(猜幸运数字)
- UIView常见方法
- Access 至少一个参数没有被指定值 解决方法
- 转载 Microsoft .NET Pet Shop 4 架构与技术分析
- NSGA-II资料合集