繁体   English   中英

Java中使用JFrame的窗口的背景图像

[英]Background Image of a window in Java using JFrame

因此,我最近开始学习Java,尽管有很多问题和我还不了解的东西,但我真的很喜欢Java,这使我得以继续学习下去。 因此,考虑到这是我有史以来的第一种编程语言,请耐心考虑我犯的任何“菜鸟”错误。

因此,我使用JFrame创建了一个全屏窗口:

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Main extends JFrame {

    public static void main(String[] args) {

        //Window
        JFrame mainWindow = new JFrame("Day One");
        mainWindow.setExtendedState(JFrame.MAXIMIZED_BOTH); 
        mainWindow.setUndecorated(true);
        mainWindow.setVisible(true);
        //End Window

    }

}

然后,我尝试通过添加以下内容来向窗口添加背景图片:

        mainWindow.setLayout(new BorderLayout());
        mainWindow.setContentPane(new JLabel(new ImageIcon("C:\\Users\\Recordings\\Desktop\\Day One\\Images\\Main-Background-Image.png")));
        mainWindow.setLayout(new FlowLayout()); 

我在这里找到了此代码但根本无法正常工作。 在此网站中,有两种不同的制作方法,但我都尝试过两种方法,但均无效果。

我也在这里用stackoverflow搜索了类似的问题,但是所有这些问题都没有得到答案,或者都与我的示例相同。

我真的希望我已经足够清楚,非常感谢您的宝贵时间

编辑:

如建议的那样,我分开了很长的单个语句:

            mainWindow.setContentPane(new JLabel(new ImageIcon("C:\\Users\\Recordings\\Desktop\\Day One\\Images\\Main-Background-Image.png")));

分为三个更简单的调试语句:

        ImageIcon image = new ImageIcon("C:\\Users\\Recordings\\Desktop\\Day One\\Images\\Main-Background-Image.png");
        JLabel label = new JLabel(image);
        mainWindow.setContentPane(label);

几点提示

  • 通常最好将panfel放在框架中,然后在其中添加组件。 秋千班级变大时,可以进行良好的围堵。
  • 最好为您的项目创建一个资源文件夹。 在项目的源代码中创建一个,例如为项目的src和bin文件夹所在的位置,并将其命名为“ resources”。
  • 创建图像图标时,最好在尝试捕获之前加上它,这样您就可以给出适当的错误并轻松定位,甚至在运行时处理错误。

说了这么多,这就是您的代码,还有一些额外的内容。 它创建一个面板来保存jlabel(image)并将该面板添加到框架中。 它使用一种快速的方法创建一个图像图标,您所要做的就是传递文件名。 此方法假定您已在项目目录中创建了名为resources的文件夹,并将图像放置在该文件夹中。

public static void main(String[] args) {
    //Window
    JFrame mainWindow = new JFrame("Day One");
    mainWindow.setExtendedState(JFrame.MAXIMIZED_BOTH); 
    mainWindow.setUndecorated(true);

    //Create image
    JLabel imageHolder = new JLabel();
    imageHolder.setIcon(makeImageIcon("example.png"));

    //Add image to panel, add panel to frame
    JPanel panel = new JPanel();
    panel.add(imageHolder);

    mainWindow.add(panel);

    mainWindow.setVisible(true);
}

//Creates imageicont from filename
public static ImageIcon makeImageIcon(String filename) {
    BufferedImage myPicture = null;
    try {
        myPicture = ImageIO.read(new File("resources/" + filename));
    } catch (IOException e) {
        e.printStackTrace();
    }
    return new ImageIcon(myPicture);
}

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM