2013-05-04 91 views
0

我的java程序已經有一個Canvas,我打算用MouseListener將4個組件添加到該Canvas中以充當4個按鈕。當然4個「按鈕」會有不同的響應是否可以爲同一個類創建不同的mouseClicked()?

我可以爲這4個組件創建一個類(我不知道該怎麼做),或者我必須爲4個組件定義4個類(這更容易)?

回答

0

MouseEvent延伸EventObject其具有方法getSource()。另外,最好在按鈕上添加一個ActionListener,因爲它不僅會對鼠標作出反應,還會對鍵盤作出反應。

+0

感謝您的評論安德魯。 – 2013-05-04 16:48:06

+0

感謝評論安德魯,我會嘗試你所說的。順便說一下,我有一個Container,並且我定義了一個從Component派生的新類,我從該新類創建了一個對象,並將它添加到之前說的Component中。我認爲要顯示新組件,我必須使用該新組件的paint()方法。但最後,沒有任何顯示。我能做些什麼,我的代碼很長,很難跟蹤,但如果你需要,我會把它交給你們所有人。再次感謝! – 2013-05-04 16:54:09

+0

*「我的代碼相當長」*爲了更好地提供幫助,請發佈[SSCCE](http://sscce.org/)。 – 2013-05-05 02:44:41

0
public class ciCanvas extends Container 
{ 
    public void paint() 
    { 
    // I draw an image here, it works perfectly 



     Image MainMenuPlayBtImage = 
      Toolkit.getDefaultToolkit().getImage(ciConfig.CI_BT1_PATH) ;     
     Label MainMenuPlayText = new Label(ciConfig.CI_TEXT_PLAYBT) ; 

     Point MainMenuPlayLocation = new Point(100, 100) ; 

     ciTitle MainMenuBt = new ciTitle(MainMenuPlayText, MainMenuPlayBtImage, MainMenuPlayLocation) ; 

     this.add(MainMenuBt) ; 
    } 

} 

ciTitle擴展組件及以下4行代碼的目的是一個組件添加到這個容器

我希望這將顯示ciTitle組件,但沒有出現,請注意,我還執行代碼ciTitle.paint()方法(見下文)

public void paint(Graphics _GraphicsDev) 
{ 
    setSize(
      this.ciTitleImage.getWidth(this), 
      this.ciTitleImage.getHeight(this)); 

    _GraphicsDev.drawImage(
      this.ciTitleImage, 
      this.ciTitleLocation.x, 
      this.ciTitleLocation.y, 
      this) ; 


} 

仍然有一些代碼,這裏沒有定義,但我希望這些都足以說明問題

相關問題