簡體   English   中英

如何在繪制的背景上添加JPanel組件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM