图像未在JFrame中显示

时间:2013-05-22 20:42:06

标签: java image jframe imageicon

为什么我的图片没有显示?按钮始终存在,但图像不会出现。它可能不是一个编程问题。我应该在哪里放置图像?

头等档案:

public class start {
    public static void main(String args[]){
        menu m1 = new menu();
        m1.setVisible(true);
    }
}

第二类文件:

import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.*;

public class menu extends JFrame{

    private static final long serialVersionUID = 1L;

    public menu(){
        super("Parachute!");
        setSize(1000, 800);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        JPanel main = new JPanel(new GridBagLayout());
        JPanel title = new JPanel(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.insets = new Insets(15, 15, 15, 15);
        JButton play = new JButton("Play!");
        JButton help = new JButton("Help");
        JButton options = new JButton("Options");
        ImageIcon logo = new ImageIcon("parachute.jpg");
        JLabel imageLogo = new JLabel(logo);
        gbc.gridx = 0;
        gbc.gridy = 0;          

        main.add(play, gbc);

        gbc.gridx = 0;
        gbc.gridy = 1;

        main.add(help, gbc);

        gbc.gridx = 0;
        gbc.gridy = 2;

        main.add(options, gbc);
        title.add(imageLogo);
        add(title, BorderLayout.NORTH);
        add(main, BorderLayout.CENTER);
    }
}

2 个答案:

答案 0 :(得分:1)

两件事:

首先,在使用之前,您没有将布局设置为borderlayout。做:

setLayout(new BorderLayout())

其次,要检查是否存在parachute.jpg文件,您可以这样检查:

 File f = new File("parachute.jpg");
 System.out.println(f.exists());

如果打印false,则表示找不到该文件。在这种情况下,您需要将图像文件放在正确的目录中。

我相信你正在使用像Netbeans或Eclipse这样的IDE。在这种情况下,将图像放在项目的根目录中。例如,您有一个项目Test。然后图像文件应该在Test文件夹中。 IDE通常会从项目的根目录中查找文件。

PS :由于您不熟悉编程,因此您应该尝试遵循所使用语言的惯例。它使其他人更容易理解您的代码。查看here以了解Java约定。

答案 1 :(得分:-1)

您是否尝试过将main添加到内容中? 这样的事情:getcontent().add(main, BorderLayout.CENTER)