我正在编写一个图像益智游戏,代码的一部分是将用户选择的片段与正确图像的片段进行比较。
每个图像块已经作为ImageIcon添加到JButton。
需要一个标识符来区分每个图像并进行比较。
我为每个创建为标识符的JButton设置一个setName()。
当用户在将拼图块从原始的3x3网格拖曳到另一个3x网格以进行匹配之后,将其拖动到拼图上时,比较开始。
我在从比较if语句中删除错误时遇到问题。
if
我从这个SO线程获得了比较思路- 链接
private JButton[] button = new JButton[9]; private JButton[] waa = new JButton[9]; private String id; private int cc; private String id2; private int cc2; // setName for each of the 9 buttons in the original 3x3 grid being created // which stores the shuffled puzzle pieces for(int a=0; a<9; a++){ button[a] = new JButton(new ImageIcon()); id += Integer.toString(++cc); button[a].setName(id); } // setName for each of the 9 buttons in the other 3x3 grid // where the images will be dragged to by the user for(int b=0; b<9; b++){ waa[b] = new JButton(); id2 += Integer.toString(++cc2); waa[b].setName(id2); } // check if puzzle pieces are matched in the correct place // compare name of original 'button' array button with the name of 'waa' array buttons button[a].addMouseListener(new MouseAdapter(){ public void mouseReleased(MouseEvent m){ if(m.getbutton().getName().equals (waa.getName())){ } else{ JOptionPane.showMessageDialog(null,"Wrong! Try Again."); } } }
在您的情况mouseReleased下,m.getButton()将返回被单击的鼠标按钮。您将需要做更多这样的事情,以使您更接近:
mouseReleased
m.getButton()
if (m.getComponent().getName().equals(waa.getName())) {
m.getComponent()返回触发事件的Component对象(您的JButton)。在这里,您可以与getName所使用的方法进行比较。
m.getComponent()
Component
JButton
getName
还有一个问题是您的waa变量是数组。我不确定如何比较它们,是否遍历数组并确保索引和名称匹配,但这是您需要研究的另一个问题。
waa