如何从类中获取Java图形以用于小程序?

如何从类中获取Java图形以用于小程序?,java,class,graphics,applet,Java,Class,Graphics,Applet,在Java中,如何在类中创建图形,然后在小程序中使用图形 为图形创建此类的尝试如下所示 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(G

在Java中,如何在类中创建图形,然后在小程序中使用图形

为图形创建此类的尝试如下所示

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

由于我对询问堆栈溢出问题相对较新,如果问题格式有任何错误,请耐心等待,如果可能,请通过评论让我知道,以便我将来可以避免这些错误。谢谢大家!

当绘制系统希望重新绘制组件时,将自动调用绘制

例如,为了进行任何绘制,您应该将
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));
        }
    }
}
请查看和以了解更多详细信息


老实说,除非你真的必须这样做,否则不要使用小程序,从一个简单的
JFrame
JPanel

开始。首先,看看@MadProgrammer,谢谢你的链接。第二个描述了我试图做得很好的事情。不过我有几个问题。首先,行
super.paintComponent(g)的意义是什么同样,如果
paint()
调用了
paintComponent()
,那么为什么他们的示例有效,而我的示例无效?这与'super.paintComponent(g)行有关吗?()绘制由一系列链式方法调用组成,
paintComponent
的任务之一是在绘制之前准备
图形
上下文。更大的问题(查看代码)似乎更多地与如何传递
图形
上下文的引用有关。您不应该维护对您自己创建的
图形的引用。“也就是说,据您所知,AWT是否有任何功能不是Swing功能?”不,没有。但有些东西在AWT中无法使用。“此外,如果Swing依赖于AWT,这是否意味着AWT几乎可以实现Swing的所有功能?”否!如果您已经阅读了我上面链接的答案,那应该是显而易见的。这里提供的关于事件调度线程(顺便说一句,它是一个“AWT线程”)的建议完全适用于Swing和AWT小程序(
JApplet
&
Applet
-使用
invokeAndWait
)以及帧(
JFrame
&
Frame
-使用
invokeLater
)。
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));
        }
    }
}
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);
    }