Java(JFrames):仅对ArrayList的最后2个元素调用mouseListener()
我试图制作一个简单的跳棋游戏,但当我运行当前版本打印10个随机颜色(白色或黑色)的方块时,方块类的鼠标侦听器只响应最后2个方块,而不响应任何其他方块。我完全不知道为什么这只适用于两个街区。JFrame的代码在MyCraft.java中,框架上实际面板的代码在MyCraft面板中,块实例的代码在Block.java中 如果有人能回复他们的反馈,我们将不胜感激 MyCraft.java的代码:Java(JFrames):仅对ArrayList的最后2个元素调用mouseListener(),java,swing,jframe,jpanel,mouselistener,Java,Swing,Jframe,Jpanel,Mouselistener,我试图制作一个简单的跳棋游戏,但当我运行当前版本打印10个随机颜色(白色或黑色)的方块时,方块类的鼠标侦听器只响应最后2个方块,而不响应任何其他方块。我完全不知道为什么这只适用于两个街区。JFrame的代码在MyCraft.java中,框架上实际面板的代码在MyCraft面板中,块实例的代码在Block.java中 如果有人能回复他们的反馈,我们将不胜感激 MyCraft.java的代码: package com.matthewpipie.MyCraft; import javax.swing
package com.matthewpipie.MyCraft;
import javax.swing.JFrame;
public class MyCraft {
public static void main(String[] args) {
final int FRAME_WIDTH = 1280;
final int FRAME_HEIGHT = 720;
JFrame frame = new JFrame("MyCraft");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new MyCraftPanel());
frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setVisible(true);
}
}
MyCraftPanel.java的代码:
Block.java的代码:
我发布了pastebin,因为我认为否则会占用太多空间
谢谢
编辑:由于请求,下面是Blocks.java中的“重要代码”:
package com.matthewpipie.MyCraft;
public class Block extends JPanel {
private static final int BLOCK_SIZE = 90;
private int id;
private int x;
private int y;
private Color color;
public Block(int id, int x, int y) {
this.setUpFrame();
this.id = id;
this.x = x;
this.y = y;
this.generateColor();
this.setActionListeners();
}
public void setUpFrame() {
this.setPreferredSize(new Dimension(Block.getBLOCK_SIZE(), Block.getBLOCK_SIZE()));
}
public void setActionListeners() {
System.out.print("setting up ");
System.out.println(this.getId());
this.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
System.out.println("clicky45");
}
});
}
**getters and setters*
}
“clicky45”仅当我单击某个奇怪的垂直不可见线时才会出现
编辑:我发现这与块的大小有关。它们越大,点击的次数就越多。如果它们足够小,则无法单击任何一个
我想否则会占用太多空间。
-正确。我们不想看到堆芯倾倒。你需要发布一篇文章来说明这个问题(在这个论坛上而不是在pastebin上)。所以,去掉所有与所述问题没有直接关系的代码。剩下的代码将被编译,以便我们可以测试它,以便查看您描述的行为。@camickr完成,添加了新信息,以及该代码如何编译?要更快获得更好的帮助,请发布或。请阅读所有这两个链接。投票结束,因为你似乎不了解这个概念。。