绘制方法不绘制Java
我的绘制方法似乎无法绘制20x20单元格。我有一个布尔数组,用于控制单元格的状态,如果为true,则调用cells paint方法,绘制单元格,但我有两个问题绘制方法不绘制Java,java,Java,我的绘制方法似乎无法绘制20x20单元格。我有一个布尔数组,用于控制单元格的状态,如果为true,则调用cells paint方法,绘制单元格,但我有两个问题 一次只画一个,这很奇怪,因为我应该有一个40x40的布尔数组,这意味着我有40x40个单元格 他们实际上并没有在我点击的地方作画。我不知道这是怎么回事,因为当我得到单击的坐标时,我会立即将这些坐标作为我的x和y值放置在我的绘制方法中 Main 单元类 你做了很多错事。我的第一个建议是忘记屏幕外的图形,确保你做你想做的事情。您始终可以在后面
你做了很多错事。我的第一个建议是忘记屏幕外的图形,确保你做你想做的事情。您始终可以在后面创建图像。以下是一些基本准则:
- 不要扩展
。使用一个实例JFrame
- 扩展
或创建一个扩展JPanel
并添加到框架实例的类JPanel
- 然后重写
,并使用该图形上下文进行绘制paintComponent(g)
public void setPosition(int xi, int xj){
x = xi;
y = xi; // <--- should be xj
}
您可以创建自己的
mouseListener
类并扩展MouseAdapter
。这些适配器类的目的是减少混乱,这样就不必使用空方法来满足接口需求。将类放入主类中,以便它能够访问适当的数据结构。然后只需将它的一个实例添加到目标组件的鼠标侦听器中 你做了很多错事。我的第一个建议是忘记屏幕外的图形,确保你做你想做的事情。您始终可以在后面创建图像。以下是一些基本准则:
- 不要扩展
。使用一个实例JFrame
- 扩展
或创建一个扩展JPanel
并添加到框架实例的类JPanel
- 然后重写
,并使用该图形上下文进行绘制paintComponent(g)
public void setPosition(int xi, int xj){
x = xi;
y = xi; // <--- should be xj
}
您可以创建自己的
mouseListener
类并扩展MouseAdapter
。这些适配器类的目的是减少混乱,这样就不必使用空方法来满足接口需求。将类放入主类中,以便它能够访问适当的数据结构。然后只需将它的一个实例添加到目标组件的鼠标侦听器中 旁注:您的catch
块应该包含一个break代码>语句。中断不是偶然发生的。如果有人打断了你的线程,那是因为他们希望你停止你正在做的事情,然后干净地退出。忽略InterruptedException会使您的线程成为无法停止的流氓线程。请参阅我更新的回答:您的catch
块应包含中断代码>语句。中断不是偶然发生的。如果有人打断了你的线程,那是因为他们希望你停止你正在做的事情,然后干净地退出。忽略InterruptedException会使您的线程成为无法停止的流氓线程。请参阅我的更新答案哇,这是非常深入的,我已经找到了其中一些东西。我想我会完全移除集合位置,但我不需要它,因为我的数组正在处理这个问题。只需要绘制多个,而不是只存在一个,但正如您所指出的,迭代器将非常适合这样做。非常感谢您一直抽出时间如此彻底地回答!哦,抱歉,我对堆栈溢出还比较陌生,从来没有注意到它的能力,所以我很糟糕。这是你应得的。哇,这是非常深入的,其中一些东西我已经找到了。我想我会完全移除集合位置,但我不需要它,因为我的数组正在处理这个问题。只需要绘制多个,而不是只存在一个,但正如您所指出的,迭代器将非常适合这样做。非常感谢您一直抽出时间如此彻底地回答!哦,抱歉,我对堆栈溢出还比较陌生,从来没有注意到它的能力,所以我很糟糕。这至少是你应得的。
public void setPosition(int xi, int xj){
x = xi;
y = xi; // <--- should be xj
}
Timer timer = new Timer(0, (ev)-> frame.repaint());
timer.setDelay(20);
timer.start();