2013-05-30 13 views
0

我想問一下在java中創建這樣一個函數的最佳方法是什麼?我有我的JPanel和下面這張圖片作爲ImageIcon與Rectangle2D對象(黑色框架)。創建函數,檢查是否我按下了Graphics2D的元素,並將其與ActionListener鏈接

buttons with Rectangle2D

現在我只想簡單地檢查,如果我按了一幀的內部和ActionListener的功能使用這些信息,如:

public void ActionPerformed(ActionEvent e) { 
    Object obj = e.getSource(); 
    if(obj == DownloadButton) { 
     doSomething(); 
    } 
} 

那麼,有沒有一種可能更好,更快做這種事情的方式?或者我必須做出如下功能:

public void checkCoordinaes(int x, int y) { 
    if(button1.contains(x, y)) { 
     isDownloadButtonClicked = true; 
    } 
} 

並將此鏈接與ActionListener(如何?)?

+0

有沒有您想要使用的合成圖像而不是將其分離成每一個圖像的一個特別的原因按鈕?然後你可以用適當的圖標製作JButtons,這很容易,並且將它們拋入GridLayout或其他類。 – chessbot

+0

我的組合圖像有22個按鈕和一種「觸摸屏」。這是一個很好的理由嗎? ;) – tmq

+0

我不確定你的意思是觸摸屏。但在我看來,你最好花時間打破這個形象,並使用Swing來簡化它的使用方式,而不是試圖採用一種需要一個錯綜複雜的解決方法的捷徑。從長遠來看,你會節省時間,而後來的人會感謝你。 – chessbot

回答

0

如果您需要將其作爲具有圖像的單個JPanel實現,則應該創建一個MouseListener來偵聽MouseEvent。這會給你的鼠標點擊,您可以傳遞給你checkCoordinates的xy座標()函數:

public void mouseClicked(MouseEvent e) 
{ 
    checkCoordinates(e.getX(), e.getY()); 
} 
+0

我知道如何使用我的checkCoordinates函數與鼠標監聽器,但無論如何感謝你:) – tmq

+0

響應「鏈接到ActionListener(如何?)」 - 你不能如果你不使用組件提高ActionEvents(像JButtons)。正試圖給你一個徹底的迴應另一種方法,道歉,如果它低於你的水平。 :) –

相關問題