我有一个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();
}
我可以回答任何可以解决问题的问题,我将编辑要匹配的问题。
答案 0 :(得分:1)
编写一个从JPanel
扩展的类,它有一个getter(可能还有一个setter),可以让你管理图像。然后答案的其余部分变为是。
只需将MouseEvent#getComponent
结果转换为“面板”类型,然后您就可以访问获取/设置图像的功能