1

我真的是Java新手。以为我现在已经弄清楚了一些东西,但是我有一个问题证明并非如此!

行!这里是。我有这段代码(已编辑 - 非原创):

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

由于Graphicsclass is abstract,所以您需要找到合适的方法来实例化您的 Graphics 对象,以获得graphicsInstance

你可以用它GraphicsContext来绘制任何你想要的东西。GraphicsContext 是一个属于Graphics你可以用来drawRect()

看到这些帖子。可能有用:-

如何在 Java 中初始化 Graphics 对象?

什么是图形上下文(在 Java 中)?

于 2012-10-07T19:06:37.323 回答
1

这是一些示例代码,它通过覆盖其方法并将其添加到 上来绘制Rectangleusing :drawRect()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 回答