一个窗口的背景图象在使用JFrame的Java的

时间:2016-10-21 20:19:24

标签: java swing jframe

所以,我最近开始学习Java,尽管有几个问题和我还没有理解的东西,我真的非常喜欢它,它让我继续学习它。所以,考虑到它是我的第一个编程语言,请耐心等待任何" noob"我犯的错误。

所以,我使用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()); 

我找到了这段代码here,但它根本不起作用。在这个网站上有两种不同的制作方法,但是我已经尝试了两种方法,但都没有。

我还在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);

1 个答案:

答案 0 :(得分:1)

只是一些提示

  • 通常最好将一个panfel放在一个框架中然后添加组件。当挥杆课程变得更大时,可以获得良好的遏制。
  • 最好为项目创建资源文件夹。在项目来源中创建一个,例如src和bin文件夹位于项目的位置,并将其命名为“resources”。
  • 在创建和图像时,使用try catch包围其优良做法,这样您就可以提供适当的错误并轻松定位,甚至可以在运行时处理错误。

尽管如此,这里有一些额外的代码。它创建了一个面板来保持jlabel(图像),并将该面板添加到框架中。它使用快速方法创建图像图标,您只需传入文件名即可。此方法假定您已在项目目录中创建了名为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);
}

希望这有帮助