Java 2D图形-绘制矩形
因此,我对Java编程和一般编程都很陌生,请原谅我缺乏知识。我试图在屏幕上画一个简单的矩形,带有一些给定的坐标 这是我在抽屉类中的代码: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
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
不是静态的,也不是公共的()静态不应该存在,但是(根据我的经验)这是覆盖它的正确方法。。否?@Surveonpublic
起作用,但您的面板的客户端完全不需要直接调用该方法。他们在JComponent
中保护它是有原因的。作为一般规则:不要将方法公开
,除非你必须公开。在这种情况下,你不明白。现在回想起来,我已经犯过好几次这样的错误了-谢谢你的洞察力。如果你在Swing中工作,这几乎是最好的方法-我喜欢它。paintComponent
不是静态的,也不是公共的()静态的不应该存在,但是其他的(根据我的经验)这是覆盖它的正确方法。。否?@Surveonpublic
起作用,但您的面板的客户端完全不需要直接调用该方法。他们在JComponent
中保护它是有原因的。作为一般规则:不要将方法公开
,除非你必须公开。在这种情况下,你不明白。现在回想起来,我确实犯了好几次这样的错误——谢谢你的洞察力。