介绍:
绘图技术一般使用在面板JPanel上,绘图技术是重写JPanel的paint制图方法,使用的Graphics制图类来完成各种各样的图案绘制。
使用paint制图方法绘制的图形,可以在面板自由的控制位置,不会受面板流式布局的影响。
绘图原理:
Component类提供了两个和绘图相关的方法:
- paint(Graphics g)绘制组件外观
- repaint()刷新组件外观
paint方法会自动被调用的情况:
- 组件第一次显示在屏幕时
- 窗口最小化或最大化
- 窗口大小改变时
- repaint函数被调用时
绘图方法:
//重写JPanel的paint绘图方法
public void paint(Graphics g)
{
//完成初始化
super.paint(g); //这句调用父类的paint方法,初始化。
绘图语句
}
关于为什么要初始化: 点击打开链接
制图类常用的几种方法:
各个参数介绍:
1:x1,y1是起点坐标,x2,y2是终点坐标。
2-5:x,y代起始位置,也就是图形左上角的位置(x,y是相对该面板左上角而言),width和height代表宽和高,单位都是像素。
6.画图片:
小编基础创建图片公式:
g.drawImage(Image img, int x, int y, int width,int height,this); //最后的的这个this就是代表把图片添加到这个面板上,this就是this,不需要变
img怎么创?创建img:
Image img=ImageIO.read(new File("图片路径"));
Image img=Toolkit.getDefaultToolkit().getImage("图片路径");
可以理解为:利用Toolkit(工具箱)这个类的getDefaultToolkit(获取默认工具包)静态方法中的getImage(获取图片)方法拿到图片的信息。
x和y是相对面板左上角的像素,width和height代表宽和高。
7.画字符串:str代表要画的字符串,x与y是字符串相对面板左上角的像素。但是这时候字体、大小、颜色都是默认的。如果想修改,需要用8和9。
8:
g.setFont(new Font("楷书//字体",Font.BOLD//设置粗体斜体等等,30//字体大小));
9:
g.setColor(Color.red//字体颜色);
代码实现:
import java.awt.*;
import javax.swing.*;
public class Graphics_1 extends JFrame{
MyPanel mp; //定义我的面板
public static void main(String[] args) {
Graphics_1 a=new Graphics_1();
}
public Graphics_1() //设置构造函数
{
mp=new MyPanel();
this.add(mp);
this.setTitle("中国梦");
this.setIconImage(new ImageIcon("image/中国梦.jpg").getImage());
this.setSize(500, 310);
this.setLocation(200,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
class MyPanel extends JPanel
{
JButton jb1;
MyPanel()
{
}
@Override
//重写JPanel的paint绘图方法
public void paint(Graphics g) //重写paint方法
{
super.paint(g); //初始化制图方法
g.setColor(Color.BLUE); //设置颜色
g.drawOval(340, 90, 100, 100); //画圆
g.drawRect(370, 20, 40, 50); //画矩形
g.setColor(Color.red); //设置颜色
g.setFont(new Font("楷体",Font.BOLD,30)); //设置字体
g.drawString("中国梦", 340, 150); //画字符
Image im=Toolkit.getDefaultToolkit().getImage("image/中国梦.jpg"); //加载图片3
g.drawImage(im, 0, 0, 340,270,this); //画图片
}
}
这只是面板的背景,还可以在面板上添加组件。
比如加个JButton。
会变成这样: