欢迎光临
我们一直在努力

java绘图之paint(Graphics g)与Graphics g=getGraphics()的两种画笔获取

java绘图是初级程序员需要了解的内容之一,其中利用Graphics对象获取画笔就是比较核心的内容了,而通常获取Graphics对象时有多种方式,例如paint(Graphics g)与Graphics g=getGraphics()的两种方式画笔获取

  1. paint(Graphics g) java绘图时,最常使用到的就是paint(Graphics g){…内容…}方法获取画笔,然后利用JPanel等容器作为画布,在JFrame内呈现出内容,很多情况下这种方式都还是很实用,下附实例:
package com.test1;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test //Test为自定义的主类名,一般大写
{
    public static void main(String args[]) {
        JFrame newFrame=new JFrame("funBox");       
        newFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   //定义JFrame关闭时的操作(必需),有效避免不能关闭后台当前框体进程的问题    
        newFrame.setSize(400, 400);      //定义JFrame的相关属性
        newFrame.setLocation(200, 200);
        newFrame.setVisible(true); 
        newFrame.add(new FangKuai());     //将需要呈现的图像添加进JFrame中
    }
}

class FangKuai  extends JPanel //FangKuai  为自定义新建类名
{

    public void paint(Graphics g)  //重写实现panit()方法
    {
        g.setColor(Color.green);   //(0,0)位置绘制一个20*20的绿色方块
        g.fillRect(0, 0, 20, 20);
    }
}
  1. Graphics g=getGraphics()
    有的时候,需要Graphics对象进行更多的操作(例如下面需要在run()中调用Graphics对象)而不能使用paint(Graphics g)方法,这个时候,就得获取自己定义的Graphics对象来完成需求,下附实例:
package com.test1; //?为自定义建包名
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

//以下为一个框体小程序
public class _001// _001为自定义的主类名
{
    public static void main(String[] args) {
        JFrame newFrame=new JFrame("funBox");
        newFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);          //定义JFrame关闭时的操作(必需),有效避免不能关闭后台当前框体进程的问题   
        newFrame.setSize(400, 400);         //定义JFrame的相关属性
        newFrame.setLocation(200, 200);
        newFrame.setVisible(true); 
        newThread n1= new newThread();           //线程的运行,将需要呈现的图像添加进JFrame中
        newFrame.add(n1);
        Thread t1 = new Thread(n1);
        t1.start();

    }
}

class newThread extends JPanel implements Runnable //Java类中只能继承一个类,但是可以实现多个接口,此处newThread 为自定义新建类名
{
    Graphics g;    //此处定义Graphics对象 g;
    private static final long serialVersionUID = 1L;   
    public void run()   //进程run()方法重写
    {  
        g=getGraphics();   //Graphics对象 g的获取
        for(int i=0;i<100;)
        {
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }  
            this.update(g) ;       //update()方法的调用,刷新图像,使得图像不会重叠显现   
            g.setColor(Color.green);   //绘制(0,0)开始移动的20*20绿色小块
            g.fillRect(i, i, 20, 20);
            i+=20;
        } 
    }
}

总结 简单的调用repaint()方法确实可以完成很多java绘图需求,但是当需要灵活得到Graphics对象时,就必须用getGraphics()获取了,自己Java绘图的一点小小经验,希望得到更多点评得以改进。

赞(1)
版权归原作者所有,如有侵权请告知。达维营-前端网 » java绘图之paint(Graphics g)与Graphics g=getGraphics()的两种画笔获取

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址