[英]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);
几点提示
说了这么多,这就是您的代码,还有一些额外的内容。 它创建一个面板来保存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.