Java GUI - MouseListener和ActionListener可以在同一个类中吗?

时间:2012-04-19 11:40:13

标签: java swing user-interface actionlistener mouselistener

CircleListener是我的面板类中的内部类,它现在涉及MouseListener接口。 MouseRelased方法检查点击区域是否被圆圈包围,如果是,则将该形状设置为选中并删除选定的形状。

现在我需要一个ActionListener来为这个面板添加一个带有“timer”对象的随机大小的圆圈。 问题:是否可以将“ActionListener”实现到CircleListener,或者最好为“ActionListener”创建另一个内部类?

提前致谢

private class CircleListener implements MouseListener
{
    ShapesCanvas canvas;
    ShapeContainer container;
    Shape possibleShape;

    private CircleListener(ShapesCanvas canv, ShapeContainer cont)
    {
        this.canvas = canv;
        this.container = cont;
    }

    public void MouseRelased (MouseEvent e)
    {
        possibleShape = container.contains( e.getX(), e.getY());

        if( possibleShape != null)
        {
            ( (Selectable)possibleShape).setSelected(true);
            container.removeSelected();
        }
        canvas.repaint(); //repaints the last situation
    }

2 个答案:

答案 0 :(得分:11)

绝对可以,只需宣布

private class CircleListener implements MouseListener, ActionListener

您可以创建两个类,这实际上是我更喜欢的,因为那时您有两个明确定义的不同实体。每个实体只负责一个功能。

但这两种方法都是有效的。

答案 1 :(得分:1)

从语法上讲,您可以定义一个实现两个接口的类。 如果它们服务于完全不同的目的,则定义两个类,如果它们共享一些信息(例如圆的半径),则将代码放在一个类中。

我不明白的是ActionListener是响应GUI事件而不是Timer事件