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
}
答案 0 :(得分:11)
绝对可以,只需宣布
private class CircleListener implements MouseListener, ActionListener
您可以创建两个类,这实际上是我更喜欢的,因为那时您有两个明确定义的不同实体。每个实体只负责一个功能。
但这两种方法都是有效的。
答案 1 :(得分:1)
从语法上讲,您可以定义一个实现两个接口的类。 如果它们服务于完全不同的目的,则定义两个类,如果它们共享一些信息(例如圆的半径),则将代码放在一个类中。
我不明白的是ActionListener
是响应GUI事件而不是Timer
事件