如何在GroupLayout Java中设置Jframe背景图像 [英] How to set Jframe Background Image in GroupLayout Java

查看:114
本文介绍了如何在GroupLayout Java中设置Jframe背景图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试为我的相框设置背景图像,但是它不起作用.我尝试了此链接:

Am trying to set a background image for my frame but it does not work. I tried this link:

在JFrame中设置背景图像

代码:

setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("/Images/about.png")))));

我尝试将以上代码添加到我的Contentpane中,但是它不起作用.

I tried adding the above code to my Contentpane but it does not work.

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                MainMenu frame = new MainMenu();
                frame.setVisible(true);

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public MainMenu() {
    setIconImage(Toolkit.getDefaultToolkit().getImage(MainMenu.class.getResource("/Images/bug-red.png")));
    setTitle("Automated Bug Fixing");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 712, 458);

            contentPane = new JPanel();

    //contentPane.setBackground(new Color(220, 220, 220));
    contentPane.setForeground(new Color(32, 178, 170));
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
            *setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("/Images/about.png")))));*

推荐答案

基本概念很好.

您可能遇到问题的唯一可能原因是图像不存在.

The only possible reason you might be getting problems is if the image doesn't exist.

看起来您正在尝试引用Jar上下文中应该存在的图像

It looks look you are trying to reference an image that should exist within the context of the Jar

代替

ImageIO.read(new File("/Images/about.png"))

尝试

ImageIO.read(getClass().getResource("/Images/about.png"))

相反.

此外,请勿吞下异常,请确保至少记录了所有异常

Also, don't swallow exceptions, make sure all exceptions are been logged at the very least

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.HeadlessException;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class BackgroundFrameImage {

    public static void main(String[] args) {
        new BackgroundFrameImage();
    }

    public BackgroundFrameImage() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                try {
                    JLabel label = new JLabel(new ImageIcon(ImageIO.read(...))));

                    JFrame frame = new JFrame("Testing");
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setContentPane(label);
                    frame.setLayout(new BorderLayout());
                    JLabel text = new JLabel("Hello from the foreground");
                    text.setForeground(Color.WHITE);
                    text.setHorizontalAlignment(JLabel.CENTER);
                    frame.add(text);
                    frame.pack();
                    frame.setLocationRelativeTo(null);
                    frame.setVisible(true);
                } catch (IOException | HeadlessException exp) {
                    exp.printStackTrace();
                }
            }
        });
    }

}

这篇关于如何在GroupLayout Java中设置Jframe背景图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆