【问题标题】:Add background image on NetBeans Visual Library Tutorial在 NetBeans 可视化库教程上添加背景图片
【发布时间】:2014-03-04 01:08:13
【问题描述】:

我正在做一个教程,并会添加一个背景图片。我试过这样做:

public void run() {
    JFrame frame = new JFrame("VisLibDemo");
    try{
         frame.setContentPane(new JLabel( new ImageIcon(ImageIO.read(new File("C:/Users/RPR1BRG/Pictures/Brg800.jpg")))));
    }catch(IOException e){
         System.out.println("Error");
    }
    frame.setMinimumSize(new Dimension(500, 400));
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setContentPane(new VisLibDemo());
    frame.pack();
    frame.setVisible(true);

}

但是我没有得到。

或者不显示背景图片,或者出现的时候在上面,其余的都不会出现。

这就是我所拥有的:

我想将图像添加到背景中......

我这样做:

  public void run() {
        ImageIcon icon = new ImageIcon(
        getClass().getResource("/Images/Brg800.jpg"));
        JLabel label = new JLabel(icon);
        label.setLayout(new BorderLayout());

        JFrame frame = new JFrame("VisLibDemo");
        //frame.add(new VisLibDemo());
        frame.setContentPane(label);
        VisLibDemo demo = new VisLibDemo(); 
        demo.setOpaque(false); frame.add(demo);
        frame.setSize(300, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

但我只能看到一点点背景图片(“/Images/Brg800.jpg”)

对不起,糟糕的解释。但我需要一些帮助!

请帮帮我!!

【问题讨论】:

    标签: java swing netbeans background


    【解决方案1】:

    将布局设置为JLabel

    JLabel label = new JLabel( new ImageIcon(ImageIO.read(new File("C:/Users/RPR1BRG/Pictures/Brg800.jpg")))));
    label.setLayout(new BorderLayout());
    frame.setContentPane(label);
    

    旁注

    在处理将嵌入到您的程序中的图像时,您将希望通过 resource 而不是 File 加载,这在您正在开发的系统之外的其他系统上不起作用。按资源使用加载

    getClass().getResource("/path/to/image.png");
    

    您的图像应该在您的src 某处,它将被构建到类路径中。所以有了这个文件结构

    ProjectRoot
             src
                Pictures
                      Brg800.jpg
    

    你会用这个

    ImageIcon icon = new ImageIcon(getClass().getResource("/Pictures/Brg800.jpg"));
    JLabel label = new JLabel(icon);
    label.setLayout(new BorderLayout());
    frame.setContentPane(label);
    

    embedded resources标签wiki底部的链接中查看更多信息


    这是上述所有内容的示例

    import java.awt.*;
    import javax.swing.*;
    
    public class ASimpleExample {
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable(){
                public void run() {
                    ImageIcon icon = new ImageIcon(
                            getClass().getResource("/images/stackoverflow5.png"));
                    JLabel label = new JLabel(icon);
                    label.setLayout(new BorderLayout());
    
                    JPanel panel = new JPanel(new GridBagLayout());
                    panel.setOpaque(false);
                    panel.add(new JButton("Button"));
    
                    JFrame frame = new JFrame();
                    frame.setContentPane(label);
                    frame.add(panel);
                    frame.setSize(300, 300);
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setLocationByPlatform(true);
                    frame.setVisible(true);
                }
            });
        }
    }
    

    【讨论】:

    • 感谢您的回复。非常明确。但是,当我调整代码时,您是否说过我的代码,图像与其余部分重叠。我不知道如何解决这个问题......
    • 将标签设置为内容窗格,同时也将标签的布局设置为BorderLayout。然后,您可以像往常一样将组件添加到框架中。
    • 我试过这个: public void run() { ImageIcon icon = new ImageIcon( getClass().getResource("/Images/Brg800.jpg")); JLabel 标签 = 新的 JLabel(icon); label.setLayout(new BorderLayout()); JFrame frame = new JFrame("VisLibDemo");框架.setContentPane(标签); frame.setSize(300, 300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationByPlatform(true); frame.setVisible(true);但图像 Brg800.jpg 重叠
    • 对不起,回复如何:S
    • 重叠什么?您无需在框架中添加任何其他内容以使其与任何内容重叠。
    猜你喜欢
    • 2020-10-18
    • 2018-08-10
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多