首页 > 解决方案 > 添加paintComponents()后不出现背景

问题描述

我添加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();
    }
}

标签: javaswingjframe

解决方案


推荐阅读