[英]How to add JPanel Components on top of a painted background
我希望能夠將我的一個JPanel背景更改為我創建的圖像,並且仍然在其上添加組件,但是它們沒有顯示出來。
package userInterface;
import javax.swing.*;
import java.awt.*;
@SuppressWarnings("serial") public class BoardPanel extends JPanel {
private Image img;
public BoardPanel() {
img = new ImageIcon("images/board.png").getImage();
JButton button = new JButton("TEST ME");
add(button);
Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
setSize(size);
setLayout(null);
}
public void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, null);
}
}
如果覆蓋paintComponent(Graphics g)
,請始終記住首先調用super.paintComponent(g)
。 這樣,通常被繪制的所有東西也將被塗上。
在JPanel
上不可見JButton
的原因是您將JPanel
的布局設置為null
:
setLayout(null);
將布局設置為null
會使您明確設置組件的位置,這也是非常糟糕的做法。 您應該刪除該行,並讓Swing
的內部layout
正常工作。
作為旁注,我要強調的是,無論何時覆蓋paintComponent
方法,此方法的第一個語句必須是super.paintComponent(g)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.