Java 2D图形-绘制矩形

Java 2D图形-绘制矩形,java,swing,jpanel,graphics2d,Java,Swing,Jpanel,Graphics2d,因此,我对Java编程和一般编程都很陌生,请原谅我缺乏知识。我试图在屏幕上画一个简单的矩形,带有一些给定的坐标 这是我在抽屉类中的代码: public class Drawer extends JPanel { public static void drawPixel(Graphics g, int x, int y) { g.fillRect(x, y, 5, 5); } } 下面是我试图在主类中使用的代码: Drawer drawer = new Drawer(); Drawe

因此,我对Java编程和一般编程都很陌生,请原谅我缺乏知识。我试图在屏幕上画一个简单的矩形,带有一些给定的坐标

这是我在抽屉类中的代码:

public class Drawer extends JPanel {

public static void drawPixel(Graphics g, int x, int y) {
    g.fillRect(x, y, 5, 5);
}

}
下面是我试图在主类中使用的代码:

Drawer drawer = new Drawer();
Drawer.drawPixel(Graphics g, i9, i10);
所以我真的不明白第一个论点是什么。它给了我一个错误,说它无法解析“符号g”。i9和i10是我希望它绘制矩形的坐标

提前感谢您的帮助。:)

绘图像素(图形g、i9、i10)可能是问题的根源

您正在(作为第一个参数)按照
Graphics g
的思路传递某些内容。仅考虑通过<代码> g <代码>,而不使用<代码>图形< /代码>位-这将解决您的问题。

Graphics g
对象指的是图形上下文-这是有效地将内容绘制到屏幕上的内容。通过调用它的方法,你可以在用户可以看到的地方画东西

例如,可以重写其方法。你会注意到这个方法接收了一个图形对象——然后你可以用它在面板中绘制东西。

Drawer.drawPixel(图形g,i9,i10)可能是问题的根源

您正在(作为第一个参数)按照
Graphics g
的思路传递某些内容。仅考虑通过<代码> g <代码>,而不使用<代码>图形< /代码>位-这将解决您的问题。

Graphics g
对象指的是图形上下文-这是有效地将内容绘制到屏幕上的内容。通过调用它的方法,你可以在用户可以看到的地方画东西


例如,可以重写其方法。你会注意到这个方法会引入一个图形对象,然后你可以用它来在面板中绘制东西。

你不能绘制这样的东西。您应该使用
paintComponent()
方法进行绘制

选中此项:

public class RectDrawer extends JPanel {
    private int x;
    private int y;
    public RectDrawer(int x, int y){
        this.x = x;
        this.y = y;
    }
    public void paintComponent(Graphics g) {
        g.fillRect(x, y, 5, 5);
    }
}

你不能画那样的东西。您应该使用
paintComponent()
方法进行绘制

选中此项:

public class RectDrawer extends JPanel {
    private int x;
    private int y;
    public RectDrawer(int x, int y){
        this.x = x;
        this.y = y;
    }
    public void paintComponent(Graphics g) {
        g.fillRect(x, y, 5, 5);
    }
}

您的一些代码与Graphics g不一样。我不打算讨论它,因为其他人都有,但我建议你看一些教程。如果您对java有新的了解,请查看:

您应该看看这个视频系列,它教您对java语法和基础知识有一个坚实的理解。然后,您可以开始查看以下教程:


这让你对用Java制作复杂的游戏有了一个很好的理解。我甚至推荐中级和高级Java程序员来检查它。当我开始学习的时候,我看了其他的教程,他们主要是中途停下来,犯了严重的错误或者类似的事情。本视频以一种更简单的方式教授它。

您的一些代码与Graphics g不一样。我不打算讨论它,因为其他人都有,但我建议你看一些教程。如果您对java有新的了解,请查看:

您应该看看这个视频系列,它教您对java语法和基础知识有一个坚实的理解。然后,您可以开始查看以下教程:


这让你对用Java制作复杂的游戏有了一个很好的理解。我甚至推荐中级和高级Java程序员来检查它。当我开始学习的时候,我看了其他的教程,他们主要是中途停下来,犯了严重的错误或者类似的事情。本视频将以一种更简单的方式教授它。

您应该查看哪些内容会让您花一些时间阅读Oracle Swing教程。它将向您展示如何将GUI部件组合在一起。您应该了解哪些因素导致您花一些时间阅读Oracle Swing教程。它将向您展示如何将GUI部件组合在一起。如果您在Swing中工作,这几乎是最好的方法-我喜欢它。
paintComponent
不是静态的,也不是公共的()静态不应该存在,但是(根据我的经验)这是覆盖它的正确方法。。否?@Surveon
public
起作用,但您的面板的客户端完全不需要直接调用该方法。他们在
JComponent
中保护它是有原因的。作为一般规则:不要将方法
公开
,除非你必须公开。在这种情况下,你不明白。现在回想起来,我已经犯过好几次这样的错误了-谢谢你的洞察力。如果你在Swing中工作,这几乎是最好的方法-我喜欢它。
paintComponent
不是静态的,也不是公共的()静态的不应该存在,但是其他的(根据我的经验)这是覆盖它的正确方法。。否?@Surveon
public
起作用,但您的面板的客户端完全不需要直接调用该方法。他们在
JComponent
中保护它是有原因的。作为一般规则:不要将方法
公开
,除非你必须公开。在这种情况下,你不明白。现在回想起来,我确实犯了好几次这样的错误——谢谢你的洞察力。