Swing Netbeans构建器中不显示背景图像

时间:2013-02-01 23:10:17

标签: java swing user-interface jframe jpanel

我在JFrame类上使用netbeans builder“design”。 我有传统的JFrame,我在其中添加了(使用构建器)JPanel。

现在在代码中,我想为此面板添加一个背景,如下所示:

public class NewJFrame extends javax.swing.JFrame {

    public NewJFrame() {
        initComponents();
        addBackground();
    }

    private void addBackground()
    {
        Image bgImage;
        try {
            bgImage = ImageIO.read(new File("src/general/Mockup.png"));
            jPanel1.add(new NewJFrame.ImagePanel(bgImage));
            jPanel1.repaint();
        } catch (IOException ex) {
            Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static void main(String args[]) {

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }
}

我什么都没看到,只是一个空的JFrame / JPanel。

顺便说一句,我将它用于ImagePanel代码

@SuppressWarnings("serial")
class ImagePanel extends JPanel {
    private Image image;

    ImagePanel(Image image) {
        this.image = image;
    };

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
    }
}

3 个答案:

答案 0 :(得分:5)

答案 1 :(得分:3)

什么是jPanel1?它使用什么布局? GUI渲染后ImagePanel对象有多大?为什么不简单地使用带有图像的JLabel(或ImagePanel实例)作为JFrame的contentPane,而不是通过所有这些体操?请注意,这种类型的编码是我避免使用NetBeans生成的代码的一个原因。让我自己编写代码,然后我可以完全控制GUI的所有内容和显示内容。

答案 2 :(得分:1)

为什么不简单地添加JLabel并在构造函数中插入图像名称?像:

JFrame background = new JFrame(“back.png”);

然后,您可以将此标签直接添加到框架或JPanel。