向面板添加多个鼠标侦听器

时间:2015-04-04 17:54:06

标签: java arrays object mouseevent paint

我正在尝试向一个面板添加多个鼠标监听器,但我希望它们像这样在同一行:

Paint.paint.addMouseListener(Shape.circle,Shape.blah);

这可能吗? 我知道你可以这样做:

Paint.paint.addMouseListener(Shape.circle);
Paint.paint.addMouseListener(Shape.blah);

这并不算太糟糕,但我认为如果你不使用数组会更容易,如果可能的话你可以将它添加到同一行。那么,谁知道这是否可能?谢谢。

1 个答案:

答案 0 :(得分:2)

没有addMouseListener(...)方法接受多个侦听器,但您可以编写自己的实用程序方法来执行此操作:

public static void addManyMouseListeners( Component component, MouseListener... mouseListeners ) {

    if ( component != null && mouseListeners != null ) {
        for ( MouseListener mouseListener : mouseListeners ) {
            component.addMouseListener( mouseListener );
        }
    }
}

varargs参数允许您调用方法,如:

addManyMouseListeners( Paint.paint, Shape.circle, Shape.blah );

事实上,添加尽可能多的鼠标听众。在方法内部,varargs参数被解释为一个数组,并像在任何数组上一样迭代它。