背景图像未显示.被JPanel/JScrollPane阻止



如果其他地方已经回答了这个问题,我很抱歉,但我找不到解决方案。

我有一个JFrame,我在JScrollPane中为它设置了背景和JPanel。

然而,当我将滚动窗格添加到jframe时,它只显示灰色,即使我将其设置为不透明。

我正试图得到它,这样jpanel回来是透明的,按钮添加到jpanel在背景上滚动。

这是我的代码:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.*;

public class ZeldaBundle extends JFrame {
JPanel panel = new JPanel();
JScrollPane scroller = new JScrollPane(panel);
JLabel background = new JLabel(new ImageIcon("images/back.jpg"));
JButton theLegendOfZelda = new JButton() {
    public void paint(Graphics g) {
        try {
            g.drawImage(ImageIO.read(new File("images/The Legend Of Zelda.png")), 0, 0, null);
        } catch (Exception e) {
            setText("The Legend OF Zelda");
        }
    }
};
public ZeldaBundle() {
    setSize(900, 563);
    setResizable(false);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setIconImage(new ImageIcon("images/zelda.png").getImage());
    setContentPane(background);
    background.setLayout(new BorderLayout());
    panel.setPreferredSize(new Dimension(1000, 563));
    panel.setLayout(null);
    panel.setOpaque(false);
    scroller.setOpaque(false);
    theLegendOfZelda.setSize(270, 110);
    theLegendOfZelda.setLocation(700, 113);
    panel.add(theLegendOfZelda);
    scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
    scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
    add(scroller);
    setVisible(true);
    }
    public static void main(String[] args) {
        new ZeldaBundle();
    }   
}

有人知道如何解决这个问题吗?或者知道答案在哪里?

谢谢。

(是的,我知道它的空布局,当我得到这个排序时,我会更改它(!))

将滚动视口设置为非不透明

scroller.getViewport().setOpaque(false);

另外,我建议重写JButton.paintComponent()而不是JButton.paint()。paint()和paintComponent()之间的区别?

最新更新