1

私はJavaが初めてです。今までにいくつかのことを理解したと思っていましたが、そうではないことを証明する問題があります!

Ok!ここにあります。私はこのコードを持っています(編集済み - オリジナルではありません):

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

public class MyClass extends HisClass
{
    public void drawRectangle(int width, int height)
    {
      int x1 = this.getXPos();
      int y1 = this.getYPos();
      java.awt.Graphics.drawRect(x1, y1, width, height);
    }

    public static void main(String[] args)
    {
      AnotherClass theOther = new AnotherClass();
      MyClass mine = new MyClass(theOther);
      mine.move();
    }
}

それが私に与えるエラーはこれです:

MyClass.java:66: error: non-static method drawRect(int,int,int,int) cannot be referenced from a static context

解決策を教えてください。とてもありがたいです。ありがとう。

4

2 に答える 2

2
java.awt.Graphics.drawRect(x1, y1, width, height);

drawRectメソッドは静的ではありません.Graphicsクラスのインスタンスを取得して、それを使用する必要があります: -

(graphicsInstance).drawRect(x1, y1, width, height);

Graphicsクラスはであるためabstract、Graphics オブジェクトをインスタンス化して取得する適切な方法を見つける必要があります。graphicsInstance

好きなものを描画するために使用できGraphicsContextます.GraphicsContextは、にGraphics使用できるクラスに属するオブジェクトですdrawRect()

これらの投稿を参照してください。役に立つかもしれません: -

JavaでGraphicsオブジェクトを初期化するにはどうすればよいですか?

グラフィックコンテキストとは (Java で)?

于 2012-10-07T19:06:37.323 に答える
1

メソッドをオーバーライドしてに追加することにより、 RectangleusingdrawRect()を に描画するコード例を次に示します。JPanelpaintComponent(Graphics g)JFrame

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class DrawRect extends JPanel {

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        //draw our rect
        g.setColor(Color.blue);
        g.drawRect(10, 10, 100, 50);
    }

    //or else we wont see the JPanel
    @Override
    public Dimension getPreferredSize() {
        return new Dimension(300, 300);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setTitle("DrawRect");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new DrawRect());
        frame.pack();
        frame.setVisible(true);
    }
}
于 2012-10-07T19:23:03.953 に答える