Фон не отображается после добавления компонентов краски()

#java #swing #jframe

Вопрос:

Я добавил paintComponent(g) в screenDraw() этот код. Но с тех пор кнопки вышли хорошо, но только фон не выходит. В чем проблема? Без ничего, особенно перед использованием paintComponents() , обои получились хорошими.

 package main;

public class DynamicBeat extends JFrame {

    private Image background = new ImageIcon(Objects.requireNonNull(Main.class.getResource("../images/wallpaper.jpg"))).getImage();

    private final JButton exitButton = new JButton(exitButtonBasic);
    private final JButton startButton = new JButton(startButtonBasic);
    private final JButton quitButton = new JButton(quitButtonBasic);

    JLabel menuBar = new JLabel(new ImageIcon(Objects.requireNonNull(Main.class.getResource("../images/menubar.png"))));

    private int mouseX, mouseY;

    public DynamicBeat() {
        setUndecorated(true);
        setTitle("Dynamic Beat");
        setSize(Main.SCREEN_WIDTH, Main.SCREEN_HEIGHT);
        setResizable(false);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        setBackground(new Color(0, 0, 0, 0));
        setLayout(null);

        // some JButton components...

        Music introMusic = new Music("bgm.mp3", true);
        introMusic.start();

    }

    public void paint(Graphics g) {
        Image screenImage = createImage(Main.SCREEN_WIDTH, Main.SCREEN_HEIGHT);
        Graphics screenGraphic = screenImage.getGraphics();
        screenDraw(screenGraphic);
        g.drawImage(screenImage, 0, 0, null);
    }

    public void screenDraw(Graphics g) {
        g.drawImage(background, 0, 0, getWidth(), getHeight(), this);
        super.paintComponents(g);
        this.repaint();
    }
}
 

Комментарии:

1. Здесь есть ряд ошибок. Видишь docs.oracle.com/javase/tutorial/uiswing/painting .