Java 在JFrame中创建矩形时无明显原因右移
我正在尝试用2D数组为JFrame着色,以创建一个网格,用于学校项目的“地图”。 问题是,在帧的(0,0)位置,会出现一个随机的灰色框,将所有内容向右推。它甚至把最后一个街区推到下一行的第一个位置,这让我非常困惑 我考虑了数组以索引“0”开头的事实,我想知道为什么它没有在(0,0)位置绘制一个黑盒 以下是我的代码中的两个相关类:Java 在JFrame中创建矩形时无明显原因右移,java,arrays,swing,jframe,Java,Arrays,Swing,Jframe,我正在尝试用2D数组为JFrame着色,以创建一个网格,用于学校项目的“地图”。 问题是,在帧的(0,0)位置,会出现一个随机的灰色框,将所有内容向右推。它甚至把最后一个街区推到下一行的第一个位置,这让我非常困惑 我考虑了数组以索引“0”开头的事实,我想知道为什么它没有在(0,0)位置绘制一个黑盒 以下是我的代码中的两个相关类: public class Floor1Components extends JComponent { public void paintComponent(Grap
public class Floor1Components extends JComponent {
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
for (int y = 0; y < Map.floor1Schematics.length; y++) { //for every row
for(int x = 0; x < Map.floor1Schematics[0].length; x++) { //do something for every column
Rectangle block = new Rectangle((x*50), (y*50), 50, 50);
g2.draw(block);
g2.fill(block);
if(Map.floor1Schematics[y][x].equals("wl")) {
g2.setColor(Color.BLACK);
}
if(Map.floor1Schematics[y][x].equals("gr")) {
g2.setColor(Color.GREEN);
}
if(Map.floor1Schematics[y][x].equals("end")) {
g2.setColor(Color.RED);
}
if(Map.floor1Schematics[y][x].equals("ch")) {
g2.setColor(Color.YELLOW);
}
if(Map.floor1Schematics[y][x].equals("pv")) {
g2.setColor(Color.GRAY);
}
}
}
}
}
为2D阵列的残暴行为道歉,该阵列用于着色和检测您所站的块。但我不明白为什么所有的东西都被推到右边,然后又被推到下面。我已经把块创建和索引引用的数学知识复习了一千遍。我想你应该把
g2.draw(block);
g2.fill(block);
如果我没弄错的话,在你的背景色之后
对于第一个元素,您正在绘制一个框,然后设置颜色。如果有帮助,请告诉我。如果您有主方法代码,我愿意进一步提供帮助。在绘制/填充矩形之前,您是否尝试过设置颜色,这很有效。非常感谢!我的天啊。非常感谢。我已经研究这个bug一周了,甚至对它进行了硬编码,这给我带来了更多的问题,所有这些都是因为这个。你能给我解释一下为什么会这样吗?我不想再犯同样的错误了。非常感谢。据我所知,它是这样的(例如使用真实世界的项目):默认情况下,你会拿起一支灰色的铅笔。如果你想画东西,它会用灰色来画。你需要选择你想用的正确颜色的铅笔,然后画你需要的。不太清楚它为什么是偏移量,但这需要对实际代码进行更多的调试。另外,您可能不需要g2.draw,只需要g2.fill。从我所看到的情况来看,偏移量似乎来自for循环的工作方式。如果它有助于解决问题,请联系我们。
g2.draw(block);
g2.fill(block);