有效处理鼠标点击

时间:2017-01-11 07:28:21

标签: java algorithm event-handling listener mouse

我想知道在一系列坐标范围内处理鼠标点击是否有效,而不是使用一堆if语句。这让我想到使用Listener来处理它,但是甚至可以将Listener分配给任意对象吗?

1 个答案:

答案 0 :(得分:0)

如果您正在讨论在JComponent上侦听鼠标操作,就像JButton一样,您可以将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:Extending JComponent