2012-02-04 77 views
5

是否可以在Swing中將按鈕覆蓋在標籤上?在Java Swing中通過JLabel覆蓋JButton?

例如,如果有一個JLabel與形象,沒有文字,我想在此JLabel疊加我的按鈕。標籤的定義是這樣的:

myLabel = new javax.swing.JLabel(new ImageIcon(myPicture)); 

如果沒有,那麼我怎麼能認識到這一點任何想法,謝謝。

編輯:其實我閱讀有關添加的JPanel到JLabel,當我添加一個面板與按鍵佈局,它編譯罰款,但沒有什麼是可見的,只是一個JLabel與形象

UPDATE:作爲建議通過@偏執android,不知何故,我已經解決了我的問題。然而,我仍然需要知道如何定製疊加在JLabel上的組件的位置,因爲我沒有太多的控制權(可能是因爲通常我使用netbeans來繪製佈局,而這需要硬編碼)。

像這樣的工作:

ImagePanel(Image image, int id) { 
    this.image = image; 
    this.tile = false; 

    JButton backButton = new JButton(); 
    JButton nextButton = new JButton(); 
    backButton.setText(" BACK "); 
    nextButton.setText(" NEXT "); 


    add(backButton); 
    add(nextButton); 

}; 

@Override 
public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    g.drawImage(image, 0, 0, getWidth(), getHeight(), this); 
} 
+0

你想創建一個沒有邊界的一個JButton?還是可點擊的JLabel? – Raceimaztion 2012-02-04 00:50:19

+0

@Raceimaztion,我有JLabel與圖像設置在一個未修飾的框架,所以在屏幕上,你只能看到圖像沒有任何邊界或任何東西。現在我想添加其他選項,將它們疊加在此圖像上方,可能需要在Panel中嘗試圖像,但是我想知道這是否可以實現我所問的內容? – Johnydep 2012-02-04 00:54:46

+0

請回報什麼可行,哪些不行。 :) – rtheunissen 2012-02-04 03:24:22

回答

9

您可以使用JLayeredPane,但如果我理解正確的話,絕對是最好的方式做這將是覆蓋paintComponent做到這一點:

// as part of your JPanel 
@Override 
public void paintComponent(Graphics g){ 
    super.paintComponent(g); 
    g.drawImage(background, 0, 0, this); 
} 

然後你就可以將組件添加到只要你喜歡,不需要JLabel