我正在开发匹配照片游戏,我想我可以通过知道容器标签的名称来重置 imageIcon,然后当 isMatch 在 isMatch 方法中返回 false 时重置标签图标。
在每个标签中写入以下代码,重置仅在第二个标签中起作用..我该怎么办?
public ImageIcon firstChoice;
public ImageIcon SecoundChoice;
public boolean isSelected = false;
public boolean isMatch = true;
public boolean ismatch(ImageIcon firstChoice, ImageIcon secoundChoce) {
if (firstChoice.getImage() == secoundChoce.getImage()) {
JOptionPane.showMessageDialog(null, " wowo you got it ^^");
isMatch = true;
} else {
JOptionPane.showMessageDialog(null, " notmatced");
isMatch = false;
}
return isMatch;
}
// label Mouse Clicked
private void label1MouseClicked(java.awt.event.MouseEvent evt) {
label1.setIcon(new ImageIcon("G:/Games/icons/File Server Asia.png"));
if (isSelected == true) {
ImageIcon icon1 = (ImageIcon) label1.getIcon();
firstChoice = icon1;
if (SecoundChoice != null && firstChoice != null) {
}
boolean match = ismatch(firstChoice, SecoundChoice);
if (isMatch == false) {
label1.setIcon(null);
firstChoice = SecoundChoice = null;
}
} else {
if (SecoundChoice == null) {
ImageIcon icon1 = (ImageIcon) label1.getIcon();
SecoundChoice = icon1;
isSelected = true;
}
if (isMatch == false) {
label1.setIcon(null);
}
}
}
最佳答案
我建议您不要将 ImageIcons 传递给您的 ismatch(...)
方法,而是传递包含 ImageIcons 的两个 JLabel。然后在该方法中,您可以提取 ImageIcons 并比较它们,与以前一样,但更重要的是,您有一个对保存图标的 JLabel 的引用,然后您可以将它们设置为背景或空图标。
// "second" is mispelled
public boolean ismatch(JLabel firstChoiceLabel, JLabel secoundChoceLabel) {
ImageIcon firstChoice = firstChoiceLabel.getIcon();
ImageIcon secoundChoice = secoundChoiceLabel.getIcon();
if (firstChoice.getImage() == secoundChoce.getImage()) {
JOptionPane.showMessageDialog(null, " wowo you got it ^^");
isMatch = true;
} else {
JOptionPane.showMessageDialog(null, " notmatced");
isMatch = false;
// here set Icon to null or to background icon.
firstChoiceLabel.setIcon(null);
secoundChoiceLabel.setIcon(null);
}
return isMatch;
}
关于java - java中的ImageIcon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11382827/