介绍:

绘图技术一般使用在面板JPanel上,绘图技术是重写JPanel的paint制图方法,使用的Graphics制图类来完成各种各样的图案绘制。

使用paint制图方法绘制的图形,可以在面板自由的控制位置,不会受面板流式布局的影响。

绘图原理:

Component类提供了两个和绘图相关的方法:

  1. paint(Graphics g)绘制组件外观
  2. repaint()刷新组件外观

paint方法会自动被调用的情况:

  1. 组件第一次显示在屏幕时
  2. 窗口最小化或最大化
  3. 窗口大小改变时
  4. repaint函数被调用时

绘图方法:

//重写JPanel的paint绘图方法
public void paint(Graphics g)
{
	//完成初始化
	super.paint(g);    //这句调用父类的paint方法,初始化。
        绘图语句
}

关于为什么要初始化: 点击打开链接

制图类常用的几种方法:

java repaint未执行 java中repaint_GUI

各个参数介绍:

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//字体颜色);

代码实现:




java repaint未执行 java中repaint_java repaint未执行_02


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。


会变成这样:

java repaint未执行 java中repaint_初始化_03