-1

如果我已经声明了 Graphics a,我似乎无法弄清楚为什么会出现此错误。我将如何去创建一个新的图形?(或者它是一个对象,我只是很愚蠢并试图将它声明为一个变量?)

仅供参考:我知道您可以使用 g Graphics 但我想创建一个本地 Graphics 变量(/或者它是一个对象,我只是愚蠢)。

import javax.swing.JFrame;
import javax.swing.WindowConstants;
public class World_Gen
{
    public World_Gen( int a, int b, String Name)
    {
    JFrame aFrame = new JFrame (Name);
    aFrame.setSize (a,b);
    aFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    aFrame.setVisible(true);
    }
}
import java.awt.Graphics.*;
import java.awt.Graphics;

public class launcher
{
    public static void main (String [] args)
    {
    World_Gen Gen = new World_Gen (1000,2000,"My map");
    draw Box = new draw (10,10);
    Box.drawRect();
    }
}

import javax.swing.JFrame;
import javax.swing.WindowConstants;
import java.awt.Graphics.*;
import java.awt.Graphics;
public class draw extends JFrame
{ 
 int XCords;
 int YCords;
 Graphics a; // Declared graphics a here.
 public draw (int Xcord, int Ycord)
    {    
    XCords = Xcord;
    YCords = Ycord;
    }

 public void drawRect ()
 {
     a.drawRect (XCords, YCords, 10,10); // This is where the run-time error pops up
 } 
}
4

1 回答 1

2

该变量为空,因为您从未将 Graphics 对象分配给该变量。无论如何,该代码是完全错误的,永远不应该那样做。

自定义绘画是通过覆盖paintComponent()JPanel 的方法来完成的。然后使用传递给此方法的 Graphics 对象进行绘画。

阅读关于自定义绘画的 Swing 教程以获取工作示例和更多信息。

此外,您永远不会像创建具有几个方法的类那样扩展 JFrame。您的课程与框架无关。

学习使用标准 Java 命名约定。本论坛中的任何教程或示例都将遵循标准。类名应以大写字符开头。

你有很多阅读要做。我建议您阅读我给您的链接并将目录添加为书签,因为它包含创建 GUI 所需的所有基本信息。

于 2013-10-24T01:45:27.920 回答