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