-1

Graphics を既に宣言している場合、このエラーが発生する理由がわかりません。新しいグラフィックスを作成するにはどうすればよいですか? (または、それはオブジェクトであり、私は愚かで、変数として宣言しようとしていますか?)

参考までに: 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 オブジェクトを変数に割り当てないため、変数は null です。とにかく、そのコードは完全に間違っており、決してそのようにすべきではありません。

カスタム ペイントはpaintComponent()、JPanel のメソッドをオーバーライドすることによって行われます。次に、このメソッドに渡された Graphics オブジェクトを使用してペイントを行います。

実際の例と詳細については、カスタム ペインティングに関する Swing チュートリアルを参照してください。

また、いくつかのメソッドを持つクラスを作成するためだけに行うように、JFrame を拡張することは決してありません。あなたのクラスはフレームとは何の関係もありません。

標準の Java 命名規則の使用について学びます。このフォーラムのチュートリアルや例は、標準に従っています。クラス名は大文字で始める必要があります。

やるべきことがたくさんあります。GUI の作成に必要なすべての基本情報が含まれているため、私が提供したリンクを読み、目次をブックマークすることをお勧めします。

于 2013-10-24T01:45:27.920 に答える