我想在JFrame
中添加多个图像,并使每个图像都可以点击。由于无法在Swing中直接在图像上实现侦听器,因此我必须创建那些JComponent
个对象并在这些组件上实现侦听器。
这种理解是正确的还是有更好的方法?
答案 0 :(得分:0)
有几种方法可以解决这个问题:
创建自己的类并将其扩展为JComponent
class ClickableImage extends JComponent implements MouseListener
{
private BufferedImage img;
//Include all the overridden methods for MouseListener
@Override public void mouseClicked(MouseEvent e){
//To do upon clicking on image;
}
}
您可以在JButton上设置图像。为那些JButton添加一个ActionListener。
对图像使用BufferedImage,通过鼠标光标位置检测单击该图像。
class ClikableImage extends Rectangle{
private BufferedImage img;
//You can include any other class members you need.
public MyClickableImage(int x, int y, int width, int height){
setBounds(x, y, width, height);
}
}
要检测单击特定图像,请遍历ClickableImage列表并检查ClickableImage是否包含鼠标光标坐标。
//Within a MouseListener
for(ClickableImage ci : list)
if(ci.contains(e.getX(), e.getY()))
clickedImage = ci;