*绘图原理:
Component类提供了两个和绘图相关最重要的方法
paint(Graphics g)绘制组件的外观
repaint()刷新组件的外观(展示动态)
*当组件第一次在屏幕上显示的时候,程序会自动调用paint()方法
*以下情况paint()会被调用
窗口最小化,再最大化
窗口的大小发生变化
repaint函数被调用
*Graphics提供了各种绘制图形的方法:
画直线:drawLine(int x1,int y1,int x2,int y2);
画矩形边框:drawRect(int x,int y,int width,int height);
填充矩形:fillRect(int x,int y,int width,int height);
画圆:drawOval(int x,int y,int width,int height);
填充圆:fillOval(int x,int y,int width,int height);
画图片:drawImage(Image img,int x,int y……);
画字符串:drawString(String str,int x,int y);
设置画笔的字体:setFont(Font font);
设置画笔的颜色:setColor(Color c);
……
代码:
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo9_1 extends JFrame
{
MyPanel mp=null;
public static void main(String[] args)
{
Demo9_1 Demo9_1=new Demo9_1();
}
public Demo9_1()
{
mp=new MyPanel();
this.add(mp);
this.setSize(400, 300);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
}
//定义一个MyPanel
class MyPanel extends JPanel
{
//覆盖JPanel的paint方法
//Graphics是绘图的重要类,相当于画笔
public void paint(Graphics g)
{
//调用父类,完成初始化
//此句话不能少!!!
super.paint(g);
System.out.println("paint被调用");
//先画一个圆
g.drawOval(10, 10, 30, 30);// 画圆
//画出直线
g.drawLine(100, 100, 200, 200);
//画出矩形边框
g.drawRect(10,10,40,60);
//调整颜色
g.setColor(Color.blue);
g.fillRect(10, 10, 1200, 30);
g.setColor(Color.red);
g.fillRect(10, 100, 1200, 30);
Image im=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/1234.jpg"));
//显示出来
g.drawImage(im,90,90,200,150,this);
//如何画字符串
g.setColor(Color.red);
g.setFont(new Font("隶书 ",Font.BOLD,50));
g.drawString("祖国万岁", 180, 60);
}
}