如何比较两个ImageIcons?

问题描述 投票:0回答:1

[基本上,我使用2张图像作为棋盘游戏类型的东西,但我会不时更改它,所以我需要能够检查两个是否具有相同的imageIcon。例如,如果两者都使用资源文件夹中的“ pirosfigura.png”。

    public String malomcheck() {
    String pirosicon=lblNewLabel.getIcon().toString();
    String pirosfilenev = pirosicon.substring(pirosicon.lastIndexOf("/"  ) + 1);
    String iconfilenev = labelhely_1.getIcon().toString();
    String filenev = iconfilenev.substring(iconfilenev.lastIndexOf("/"  ) + 1);


    if(filenev==pirosfilenev) {
        lblJtkos.setText("piros malom.");
        JOptionPane.showMessageDialog(null, "working");
        return "lefutott";


    }

        return "notworking. very sad.";
    }

顺便说一句,getIcon()。toString()的返回值是javax.swing.ImageIcon@cd7e8021这是指我猜的内存位置(?),因此每次运行和每张图像都是随机的,因此似乎无法使用。

java swing jlabel imageicon
1个回答
1
投票

实现此目标的一种方法是保留自己ImageIcon到文件的映射,以便每当加载ImageIcon时,都将其存储为Map作为密钥及其文件或某些符号名/ enum作为值。这样,当您想比较imIc1imIc2时,您将编写如下内容:

if (map.get(imIc1).equals(map.get(imIc2)) { ... }

或(如果您有描述性的字符串值)

if (map.get(imIc1).equals("NOT_WORKING_ICON") { ... }

或(如果使用枚举值)

if (map.get(imIc1) == NOT_WORKING_ICON ) { ... }
© www.soinside.com 2019 - 2024. All rights reserved.