鉴于此代码,
tableButton = new JButton(new ImageIcon("80F_FG2015.GIF"));
我怎样String
才能把它还给我,这样我就可以把它和另一个比较String
?
解决问题的一种方法是创建
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());
您可以使用 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);
}
您可以创建一个扩展 JButton 的新类。将字符串存储在类中。
class MyButton extends JButton
{
private String filename;
public MyButton(String filename)
{
super(new ImageIcon(filename));
this.filename = filename;
}
public String getFilename()
{
return filename;
}
}