JComponent 未显示图片背景
您遇到的问题是 JComponent 在背景图像中不可见。这可能是由于错误地使用 JPanel 和 JLabel 进行图像渲染。
使用 JPanel 进行图像渲染
在您的代码中,您将图像添加到a JPanel:
mainp.add(picLabel, c);
虽然这看起来是正确的,但它只能绘制图像本身,而不能绘制图像 成分。要在保留背景图像的同时显示组件,您应该直接将其绘制在自定义 JPanel 上,如下所示:
public class CustomJPanel extends JPanel { private BufferedImage image; public CustomJPanel(BufferedImage image) { this.image = image; } @Override public Dimension getPreferredSize() { return (new Dimension(image.getWidth(), image.getHeight())); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(image, 0, 0, this); } }
然后,您可以将组件添加到此自定义 JPanel:
CustomJPanel customPanel = new CustomJPanel(ImageIO.read(new File("bgd.png"))); mainp.add(customPanel);
使用 JLabel 进行图像渲染
或者,您可以使用 JLabel 进行图像渲染。但是,请确保将其 opaque 属性设置为 true 以正确显示组件:
JLabel picLabel = new JLabel(new ImageIcon(ImageIO.read(new File("bgd.png")))); picLabel.setOpaque(true); mainp.add(picLabel);
确保仍将组件添加到主 JPanel:
c.gridx = 0; c.gridy = 1; gusername = new JTextField(); picLabel.add(gusername, c);
按照以下步骤操作,无论是使用自定义 JPanel 还是正确配置 JLabel,您都可以确保您的 JComponent 在背景图像中显示。
以上是为什么在 Java 中使用背景图像时我的 JComponent 不可见?的详细内容。更多信息请关注PHP中文网其他相关文章!