Java用JFrame、JPanel、Graphics绘图案例讲解

来源:互联网 发布:显示屏编辑软件 编辑:程序博客网 时间:2024/05/22 12:08

前言:

本文将介绍Java绘图工具的使用,通过具体示例,演示通过JavaGraphics类在JFrame中的JPanel上绘制图形的步骤和方法。

一.绘图的相关Java类介绍:

  • JFrame类,是Java图形用户界面(GUI)工具包swing中的存放组件的容器。相当于相框。
  • JPanel类,是Java图形用户界面(GUI)工具包swing中的面板容器类。相当于画板。
  • Graphics类,是Java用于绘图和显示格式化文字的工具。相当于画笔。

二.绘图步骤:

  1. 创建相框JFrame对象jFrame
  2. 创建画板JPanel对象jPanel,重写paint()方法。
  3. paint()方法中,用画笔Graphics对象graphicsdrawXXX()进行绘图。
  4. 将画板jPanel嵌入相框中jFrame.add(jPanel)
  5. 设置相框为可见状态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();        其他省略……
原创粉丝点击