如何从类中获取Java中的Graphics以便在Applet中使用?

时间:2014-12-29 00:48:09

标签: java class graphics applet

在Java中,如何在类中创建图形,然后获取要在Applet中使用的图形?

为图形创建此类的一种尝试如下:

import java.lang.*;
import java.util.*;
import java.awt.*;

public class Cords{


    public static Graphics cords;
    public static int w,h,n;
    private static int xC,yC;

    public static void Paint(Graphics g)
    {
        for(xC=0;xC<=w;xC+=n){
            g.drawLine(xC,0,xC,h);
            g.drawString(""+xC,xC,11);
        }
        for(yC=0;yC<=h;yC+=n){
            g.drawLine(0,yC,w,yC);
            g.drawString(""+yC,1,yC));
        }
        cords=g.create();
    }
    public static Graphics cords(int w, int h,int n){
        return cords;
    }

然后我尝试在applet中使用...

import java.awt.*;

import java.applet.Applet;
import javax.swing.Timer;

public class CordsTest extends Applet

    private int x,y,w,h,n;
    private Cords a;

    public void init()
    { 
        //w=getWidth();
        //h=getHeight();
        //a.cords(w,h,50);
    }

    public void paint(Graphics g){
        w=getWidth();
        h=getHeight();
        g.setColor(Color.black);
        paint(a.cords(w,h,50));

    }
}

由于我对Stack Overflow上的问题比较新,如果格式问题有任何错误,请耐心等待,如果可能,请通过评论告诉我,以便将来可以避免这些。谢谢!

1 个答案:

答案 0 :(得分:1)

当需要重新绘制组件时,绘画系统会自动调用

paint

为了进行任何绘画,您应该将Graphics的引用传递给您绘画类的实例,例如。

使用像...这样的东西。

public class Cords{


    public void paint(Graphics g, int w, int h, int n)
    {
        for(int xC = 0; xC <=w; xC += n){
            g.drawLine(xC,11,xC,h);
            g.drawString(""+xC,xC-(n/5),11);
        }
        for(int yC = 0; yC <= h; yC += n){
            g.drawLine(25,yC,w,yC);
            g.drawString(""+yC,1,yC+((n/5)/2));
        }
    }
}

在您的小程序中,您需要创建Cords的实例,然后将其传递给Graphics

public class CordsTest extends Applet implements ActionListener{

    private Cords cords;

    public void paint(Graphics g){
        w=getWidth();
        h=getHeight();
        g.setColor(Color.black);
        if (cords == null) {
            cords = new Cords();
        }
        cords.paint(g, w, h, 10);
    }

请查看Painting in AWT and SwingPerforming Custom Painting了解详情。

老实说,除非你真的不得不这样做,避免小程序,先从简单的JFrameJPanel

开始