我正在开发一个在Jpanel中拖动和缩放图像的应用程序。

该图像存储在JLabel内部。

但是,当我将MouseMotionListener添加到面板时,则整个窗口都在拖动,并且当我尝试将MouseMotionListener添加到面板时,我无法选择图像的侧面来缩放它。

那么我可以直接将MouseMotionListener添加到BufferedImage吗?

对于任何组件,我都添加了MouseMotionListener,它不允许我选择图像的侧面。
侧面表示缩放图像的所有方向。

视窗:

        addMouseListener(handler);
        addMouseMotionListener(handler);


JLabel:

        label.addMouseListener(new MouseHandler());
        label.addMouseMotionListener(new MouseHandler());


这里的MouseHandler是为各种操作(例如mousePressedmouseDraggedmouseMove等)定义的类。

知道为什么它会那样吗?

最佳答案

BufferedImage是支持常规图像处理的类。可以从具有图形用户界面的交互式程序中和没有用户界面的非交互式批处理程序中平等使用它。在GUI中未使用的对象上使用鼠标侦听器是没有意义的,因此无法将MouseMotionListener添加到BufferedImage

您应该将侦听器添加到显示图像的GUI组件中。

07-26 08:16