我们如何创建带有背景图像的主JFrame和带有Java Swing的主JFrame内部的JFrame?

最佳答案

我相信您正在寻找internal frames

对于背景图像位,子面板JPanel,覆盖其paintComponent()方法,然后在此处将图像变白。然后将该面板的一个实例设置为JFrame的内容窗格。

public class BackgroundPanel extends JPanel {
    private BufferedImage bgImg;

    public BackgroundPanel() {
        try {
            bgImg = ImageIO.read(BackgroundPanel.class.getResourceAsStream(
                    "mybackgroundimage.png"));
        } catch (IOException ex) {
            System.err.println("Could not load background image!");
            ex.printStackTrace();
        }
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (bgImg != null) {
            g.drawImage(bgImg, 0, 0, null);
        }
    }
}

public class MyJFrame extends JFrame {

    public MyJFrame() {
        setContentPane(new BackgroundPanel());
    }

}

10-04 11:44