Java用JFrame、JPanel、Graphics绘图案例讲解
来源:互联网 发布:显示屏编辑软件 编辑:程序博客网 时间:2024/05/22 12:08
前言:
本文将介绍Java
绘图工具的使用,通过具体示例,演示通过Java
的Graphics
类在JFrame
中的JPanel
上绘制图形的步骤和方法。
一.绘图的相关Java
类介绍:
JFrame
类,是Java
图形用户界面(GUI)工具包swing
中的存放组件的容器。相当于相框。JPanel
类,是Java
图形用户界面(GUI)工具包swing
中的面板容器类。相当于画板。Graphics
类,是Java
用于绘图和显示格式化文字的工具。相当于画笔。
二.绘图步骤:
- 创建相框
JFrame
对象jFrame
。 - 创建画板
JPanel
对象jPanel
,重写paint()
方法。 - 在
paint()
方法中,用画笔Graphics
对象graphics
的drawXXX()
进行绘图。 - 将画板
jPanel
嵌入相框中jFrame.add(jPanel)
。 - 设置相框为可见状态
jFrame.setVisible(true)
和相框大小jFrame.setSize(宽度, 高度)
。
三.绘图代码示例:
案例:用Graphics
画一个小人图像。
1.绘图效果图片:
2.绘画实现代码:
按照上述5个步骤,即可快速绘图。
import java.awt.Graphics;import javax.swing.JFrame;import javax.swing.JPanel;public class DrawPersonDemo { public static void main(String[] args) { // 创建相框 JFrame jFrame = new JFrame(); // 创建画板 JPanel jpanel = new JPanel() { //序列号(可省略) private static final long serialVersionUID = 1L; // 重写paint方法 @Override public void paint(Graphics graphics) { // 必须先调用父类的paint方法 super.paint(graphics); // 用画笔Graphics,在画板JPanel上画一个小人 graphics.drawOval(100, 70, 30, 30);// 头部(画圆形) graphics.drawRect(105, 100, 20, 30);// 身体(画矩形) graphics.drawLine(105, 100, 75, 120);// 左臂(画直线) graphics.drawLine(125, 100, 150, 120);// 右臂(画直线) graphics.drawLine(105, 130, 75, 150);// 左腿(画直线) graphics.drawLine(125, 130, 150, 150);// 右腿(画直线) } }; //将绘有小人图像的画板嵌入到相框中 jFrame.add(jpanel); // 设置画框大小(宽度,高度),默认都为0 jFrame.setSize(300, 300); // 将画框展示出来。true设置可见,默认为false隐藏 jFrame.setVisible(true); }}
注意:重写JPanel
中的paint()
方法时候,必须保留super.paint(graphics);
,并且优先调用父类paint()
方法,否则JPanel
画出来是空白面板,因为画笔要在父类中创建,然后在子类中使用才会生效。另附上paint()
方法的源码节选:
public void paint(Graphics g) { boolean shouldClearPaintFlags = false; if ((getWidth() <= 0) || (getHeight() <= 0)) { return; } //在此出实例化画笔Graphics g对象,所以要先调用父类。否则画笔无效 Graphics componentGraphics = getComponentGraphics(g); Graphics co = componentGraphics.create(); 其他省略……
阅读全文
0 0
- Java用JFrame、JPanel、Graphics绘图案例讲解
- JAVA 基本绘图——利用JFrame JPanel 绘制扇形
- java画图总结之二(常用类Graphics,JFrame,JPanel)
- Java Frame Panel JFrame JPanel
- java swing difference between Jframe and JPanel
- java之JFrame、JPanel混合布局
- java-JFrame(JPanel面板)与常用组件
- Graphics 绘图类 java
- java绘图技术Graphics
- JPanel绘图
- JFrame, JPanel, JComponent
- JFrame,JPanel,JLabel详解
- JFrame,JPanel,JLabel学习
- java swing中jpanel跟jframe的区别
- JAVA 绘图类—Graphics
- Java绘图功能简介-Graphics
- Java绘图类--Graphics类
- JAVA用画板JFrame画布Panel画笔Graphics画漫天不停的跑的星星-1
- 查找和是某一值或者某一范围的的所有可能
- Beautiful Soup 库入门
- 0820 T2 添加符号
- linux下安装pip
- python3.6教程之内置函数(1)
- Java用JFrame、JPanel、Graphics绘图案例讲解
- 数学小知识&总结索引(持续更新)
- render函数和redirect函数
- Firewalld
- angular 引入三方库
- hdu 1576 A/B(扩展欧几里得)
- Simple XML解析XML
- 机器学习基石系列五
- Erlang服务器代码的分析与学习(一)