2012-04-19 44 views
4

CircleListener是我的面板類中的一個內部類,它現在涉及MouseListener接口。 MouseRelased方法檢查單擊的區域是否被圓圈包圍,如果是,則將該形狀設置爲選中並刪除所選的區域。Java GUI - MouseListener和ActionListener可能在同一個類中?

現在我需要一個ActionListener來爲這個面板添加一個「定時器」對象的隨機大小的圓圈。 問題:是否有可能爲CircleListener實現「ActionListener」,或者最好爲「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 
    } 

回答

10

這是definetly可能,只是聲明

private class CircleListener implements MouseListener, ActionListener 

您可以創建兩個類來代替,這其實是我比較喜歡的,因爲那麼你有兩個不同的實體具有明確的目的。每個實體只負責一個功能。

但這兩種方法都是有效的。

+0

此外,它僅僅是良好的面向對象的做法。 :) – 2017-08-17 15:02:02

1

語法上,您可以定義一個實現兩個接口的類。 定義兩個類,如果他們服務完全不同的目的,將代碼放在一個,如果他們共享一些信息,如圓的半徑。

什麼,我這裏不明白的是,ActionListener就是響應一個GUI事件,而不是一個Timer事件

相關問題