0

鉴于此代码,

tableButton = new JButton(new ImageIcon("80F_FG2015.GIF"));

我怎样String才能把它还给我,这样我就可以把它和另一个比较String

4

3 回答 3

2

解决问题的一种方法是创建

tableButton = new JButton(new ImageIcon("80F_FG2015.GIF", "80F_FG2015.GIF"));

第二个参数是描述。ImageIcon.toString() 方法返回描述。因此,您可以很好地将此描述与另一个图像图标的描述进行比较

您可以按如下方式获取描述:

System.out.println(((ImageIcon)tableButton.getIcon()).getDescription()); 
//or
System.out.println(((ImageIcon)tableButton.getIcon()).toString());
于 2012-06-28T18:49:06.870 回答
2

您可以使用 Reflection 来实现:

    ImageIcon icon = new ImageIcon(pathImg);
    JButton jButton1 = new JButton(icon);
    Field field = null;
    try {
        Class<? extends ImageIcon> clazz = ((ImageIcon) jButton1.getIcon()).getClass();
        //Get the field "filename" where the Image path is stored. 
        field = clazz.getDeclaredField("filename");
        field.setAccessible(true);
        String path = (String) field.get(icon);
    } catch (NoSuchFieldException ex) {
        Logger.getLogger(AAMainWindow.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SecurityException ex) {
        Logger.getLogger(AAMainWindow.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IllegalArgumentException ex) {
        Logger.getLogger(AAMainWindow.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        Logger.getLogger(AAMainWindow.class.getName()).log(Level.SEVERE, null, ex);
    }
于 2012-06-28T19:20:57.483 回答
1

您可以创建一个扩展 JButton 的新类。将字符串存储在类中。

class MyButton extends JButton
{
    private String filename;

    public MyButton(String filename)
    {
        super(new ImageIcon(filename));
        this.filename = filename;
    }

    public String getFilename()
    {
        return filename;
    }
}
于 2012-06-28T18:40:18.183 回答