高效处理鼠标点击



我想知道是否有一种有效的方法来处理坐标范围内的鼠标点击,而不是使用一堆 if 语句。 这让我考虑使用侦听器来处理它,但是是否可以将侦听器分配给任意对象?

如果你正在谈论像 JButton 一样在 JComponent 上侦听鼠标操作,你可以将 MouseListener 添加到 JComponent。

如果您谈论的是自己创建的对象,这些对象在面板中显示为图像,则可以将MouseListener添加到包含对象的面板中。每次单击鼠标时,循环访问面板中的对象,并检查对象是否包含鼠标光标。

class DisplayPanel extends JPanel{
    //Your constructor and other members..
    public DisplayPanel(){
        addMouseListener(new MouseAdapter(){
            public void mouseClicked (MouseEvent e){
                for(MyObjects : obj)
                    if(obj.contains(e.getX(), e.getY()))
                        clickedObj = obj;
            }
        });
    }
}

你的意思是让任意类扩展 JComponent 吗?如果它已经扩展了另一个类怎么办?

另一种选择是考虑制作定制的JComponent。但是,如果您的对象已经扩展到另一个类。您可以考虑组合而不是继承:

class ArbritaryComponent extends JComponent{
    private ArbritaryObject obj;
}
class ArbritaryObject extends SomeClass{
    private Image image;
}

然后将侦听器添加到自定义组件。要简要了解自定义 JComponent:扩展 JComponent

相关内容

  • 没有找到相关文章

最新更新