我的java程序已經有一個Canvas,我打算用MouseListener將4個組件添加到該Canvas中以充當4個按鈕。當然4個「按鈕」會有不同的響應是否可以爲同一個類創建不同的mouseClicked()?
我可以爲這4個組件創建一個類(我不知道該怎麼做),或者我必須爲4個組件定義4個類(這更容易)?
我的java程序已經有一個Canvas,我打算用MouseListener將4個組件添加到該Canvas中以充當4個按鈕。當然4個「按鈕」會有不同的響應是否可以爲同一個類創建不同的mouseClicked()?
我可以爲這4個組件創建一個類(我不知道該怎麼做),或者我必須爲4個組件定義4個類(這更容易)?
MouseEvent
延伸EventObject
其具有方法getSource()
。另外,最好在按鈕上添加一個ActionListener
,因爲它不僅會對鼠標作出反應,還會對鍵盤作出反應。
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) ;
}
仍然有一些代碼,這裏沒有定義,但我希望這些都足以說明問題
感謝您的評論安德魯。 – 2013-05-04 16:48:06
感謝評論安德魯,我會嘗試你所說的。順便說一下,我有一個Container,並且我定義了一個從Component派生的新類,我從該新類創建了一個對象,並將它添加到之前說的Component中。我認爲要顯示新組件,我必須使用該新組件的paint()方法。但最後,沒有任何顯示。我能做些什麼,我的代碼很長,很難跟蹤,但如果你需要,我會把它交給你們所有人。再次感謝! – 2013-05-04 16:54:09
*「我的代碼相當長」*爲了更好地提供幫助,請發佈[SSCCE](http://sscce.org/)。 – 2013-05-05 02:44:41