簡體   English   中英

有沒有一種方法可以在不使用JLabel或Overrideing paintComponent的情況下向JPanel添加背景圖像?

[英]Is there a ways I can add background image to JPanel without using JLabel or Overriding paintComponent?

我想在不使用JLabel或重寫paintComponent的情況下將背景圖像添加到JPanel。

JPanel沒有setIcon(ImageIcon)。 我真的很想在其他組件(如JLabel)中動態更改JPanel的背景圖像(如setIcon)。

“我想在不使用JLabel或重寫paintComponent的情況下將背景圖像添加到JPanel”

似乎有點舒展。 您想要做某事,但是不想按照原本應該做的方式去做。 也許對如何實現這一目標的更好理解會使您改變主意。

JPanel和重寫paintComponent

有一個方法來setImage(Image image)或者您可以使用ImageIcon 您可以設置用於繪制背景的圖像。

public class BackgroundPanel extends JPanel {
    private Image image;

    public void setImage(Image image) {
        this.image = image;
        repaint();
    }

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

調用setImage傳遞圖像時,由於調用repaint() ,它將動態更改圖像

使用JLabel

正如nICEE所提到的,您可以將JLabel用作容器,並將所有組件添加到標簽中。 請記住,JLabel是Container的子類。 可以將任何容器添加到其中。 請記住,JLabel沒有布局管理器(與具有默認設置的JFrame和JPanel不同),因此您需要進行設置。 你可以簡單地做

JLabel backgroundLabel = new JLabel();
backgroundLabel.setIcon(new ImageIcon("backgound.png"));
backgroundLabel.setLayout(new GridBagLayout());
backgroundLabel.add(new JButton("Hello World"));

那是完全合法的。

另一種選擇

Rob Camick爵士BackgroundPanel先生的一類。 查看鏈接以了解如何使用它。 它與我所描述的第一個選項基本上是相同的概念,僅比其他選項好100倍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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