MouseEvent e

时间:2015-06-12 21:49:56

标签: java swing mouseevent

我希望能够打印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++;
    }

1 个答案:

答案 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);

您通常应该避免尝试设置尺寸。介意我问,你想用这个来实现什么?