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

Adding more than one mouse listener to a panel

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

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

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

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

这还不错,但我认为如果您不使用数组会更容易,如果可能的话,您可以将它添加到同一行。那么,有人知道这是否可能吗?谢谢。

没有 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 参数被解释为一个数组,您可以像在任何数组上一样对其进行迭代。