码迷,mamicode.com
首页 > 编程语言 > 详细

<JAVA>paint(Graphics g)与Graphics g=getGraphics()的两种画笔获取

时间:2018-06-19 22:46:24      阅读:337      评论:0      收藏:0      [点我收藏+]

标签:his   int()   tst   tco   容器   TE   AC   UI   获取   

 1.  paint(Graphics g)

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

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

  2.  Graphics g=getGraphics()

   有的时候,需要Graphics对象进行更多的操作(例如下面需要在run()中调用Graphics对象)而不能使用paint(Graphics g)方法,这个时候,就得获取自己定义的Graphics对象来完成需求,下附实例

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;  
}   
}  
} 

 3.  总结

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

<JAVA>paint(Graphics g)与Graphics g=getGraphics()的两种画笔获取

标签:his   int()   tst   tco   容器   TE   AC   UI   获取   

原文地址:https://www.cnblogs.com/lreing/p/9201175.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!