【问题标题】:Java GUI - MouseListener and ActionListener are possible to in same class?Java GUI - MouseListener 和 ActionListener 可以在同一个类中吗?
【发布时间】:2012-04-19 20:25:32
【问题描述】:

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

现在我需要一个 ActionListener 使用“计时器”对象将随机大小的圆圈添加到此面板。 问题:是否可以将“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
    }

【问题讨论】:

    标签: java swing user-interface actionlistener mouselistener


    【解决方案1】:

    绝对有可能,只要声明

    private class CircleListener implements MouseListener, ActionListener
    

    您可以创建两个类,这实际上是我更喜欢的,因为这样您就有了两个具有明确定义目的的不同实体。每个实体只负责一项职能。

    但这两种方法都有效。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2012-05-15
        • 1970-01-01
        • 2013-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-13
        • 2012-02-07
        • 2011-06-03
        相关资源
        最近更新 更多