*绘图原理:

    Component类提供了两个和绘图相关最重要的方法

        paint(Graphics g)绘制组件的外观

        repaint()刷新组件的外观(展示动态)

*当组件第一次在屏幕上显示的时候,程序会自动调用paint()方法

*以下情况paint()会被调用

    窗口最小化,再最大化

    窗口的大小发生变化

    repaint函数被调用

*Graphics提供了各种绘制图形的方法:

    画直线:drawLine(int x1,int y1,int x2,int y2);

(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=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);    
    } 
}