JPanels数组的鼠标监听器

时间:2016-02-19 20:59:52

标签: java swing

我有一个JPanel数组,它们本身包含ImageIcons,我已将此数组JPanels添加到单个JPanel中(因为我使用的是Scroll Pane)。在添加这些JPanels时,我为每个JPanel添加了一个鼠标监听器,我的问题是,是否可以编写一个可以使用e.getSource()或其他类似方法的单个事件处理程序,我可以从中提取JPanel和类似的ImageIcon点击了哪一个。

这可能听起来很复杂,因为我无法很好地解释我的情况,但下面是我到目前为止的一些相关代码片段。

imageArray=new BufferedImage[256];
imageLabelArray = new JLabel[256];

...

imageArray[i] = volume.getSlice(image, face, i);//this returns an image
scaledImage = imageArray[i].getScaledInstance(25,25,
                    Image.SCALE_SMOOTH);
imageLabelArray[i] = new JLabel(new ImageIcon(scaledImage));
imageLabelArray[i].addMouseListener(this);

...

for(int i=0;i<255;i++){
    panel.add(imageLabelArray[i]);
}

...

public void mouseClicked(MouseEvent e) {
    // TODO extract image data
    dispose();
}

我可以回答任何可以解决问题的问题,我将编辑要匹配的问题。

1 个答案:

答案 0 :(得分:1)

编写一个从JPanel扩展的类,它有一个getter(可能还有一个setter),可以让你管理图像。然后答案的其余部分变为是。

只需将MouseEvent#getComponent结果转换为“面板”类型,然后您就可以访问获取/设置图像的功能