我希望能够打印MouseEvent e,我看到有人使用getSource()方法来执行此操作,但是我没有提供我想要的确切输出。在其他代码中,人们打印e.getSource(),它给出了图像的直接路径。
当我打印e.getSource()时:
javax.swing.JLabel[,224,7,23x20,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=file:/C:/Users/Sam/workspace/RS%20Calculator/bin/Hitpoints_icon.png,disabledIcon=,horizontalAlignment=C ENTER,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=,verticalAlignment=CENTER,verticalTextPosition=CENTER]
此输出包括我想要访问的图像路径 - 还包括许多其他随机信息。
如何才能仅打印图像路径? (/C:/Users/Sam/workspace/RS%20Calculator/bin/Hitpoints_icon.png
)
for(JLabel j : jLabelArray){
j = new JLabel(imageIcons[n]);
j.addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e){
setSize(650,400);
System.out.println(e.getSource());
iconClicked(e);
}
});
add(j);
n++;
}
答案 0 :(得分:3)
Java返回的源是正确的,因为MouseListener已添加到JLabel而不是图像。如果您想要标签包含的ImageIcon,则只需提取它。请注意,使用mousePressed方法而不是mouseClicked通常会更好。
@Override
public void mousePressed(MouseEvent e) {
JLabel label = (JLabel) e.getSource();
ImageIcon icon = label.getIcon();
// ....
}
作为一个方面,这让我很烦恼:
setSize(650,400);
您通常应该避免尝试设置尺寸。介意我问,你想用这个来实现什么?