簡體   English   中英

JPanel 背景圖像未顯示

[英]JPanel background image not showing

我使用 GUI 設計器來創建一個JPanel類。 我正在嘗試向其添加背景圖像,但它什么也沒顯示。 如果我將JLabel放在JPanel某處,它可以顯示JLabel

我認為圖像路徑不是問題,因為我可以在另一個面板上顯示保存在此路徑中的其他圖像(使用JLabel的 setIcon() 方法)。

背景圖片的尺寸為 1920x1080。

我已經在這里搜索了很多帖子。 有誰知道出了什么問題?

public class MenuPanel extends javax.swing.JPanel {
    private final Image background;

    public MenuPanel() {
        initComponents();
        background = new ImageIcon("/program/img/bg.jpg").getImage();
    }

    @Override
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.drawImage(background, 0, 0, null);    
    }

    @SuppressWarnings("unchecked")                      
    private void initComponents() {

        setPreferredSize(new java.awt.Dimension(800, 650));

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 800, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 650, Short.MAX_VALUE)
        );
    }     
}

public class GUI {
    public static void main(String args[]) {
        JFrame frame = new JFrame();
        frame.setSize(new Dimension(800, 650));
        MenuPanel m = new MenuPanel();
        frame.add(m);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.pack();
        frame.setVisible(true);
    }
}

您可以嘗試從這里實現示例。

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ImageTest {

  public static void main(String[] args) {
    ImagePanel panel = new ImagePanel(new ImageIcon("images/background.png").getImage());

    JFrame frame = new JFrame();
    frame.getContentPane().add(panel);
    frame.pack();
    frame.setVisible(true);
  }
}

class ImagePanel extends JPanel {

  private Image img;

  public ImagePanel(String img) {
    this(new ImageIcon(img).getImage());
  }

  public ImagePanel(Image img) {
    this.img = img;
    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);
  }

}

暫無
暫無

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

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