代码无效,试图让图像显示出来

时间:2013-12-31 21:51:59

标签: java image swing embedded-resource

我真的不明白为什么我的代码无法显示这头牛的图片,有什么建议吗?我从我的信息中正确地做了一切。所以我不太确定出了什么问题。我使用eclipse,程序显示没有错误。所以,如果有人能提供帮助,我们将非常感激。提前谢谢。

    package Zeus;

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


public class Main extends JFrame{

    public static final int WIDTH = 400;
    public static final int HEIGHT = 300;
    public static final int SCALE = 2;

    private ImageIcon COW;
    private static JLabel C0W;

    Main() {
        setLayout(new FlowLayout());

        COW = new ImageIcon(getClass().getResource("/Cow Clicker/Resource/COW.png"));
        C0W = new JLabel(COW);

    }

    public static void main(String[] args) {

        JFrame Squishy = new JFrame("Squishy");
        Squishy.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Squishy.setResizable(false);
        Squishy.setVisible(true);
        Squishy.setSize(WIDTH*SCALE, HEIGHT*SCALE);
        Squishy.setLocationRelativeTo(null);

        Squishy.add(C0W);
    }

}

2 个答案:

答案 0 :(得分:3)

您需要创建Main的实例,以便可以从其构造函数加载图像。

答案 1 :(得分:1)

我不知道从哪里开始

1st)按惯例,java中的变量以驼峰式的小写字母开头。 因此,您的变量COW应更改为cow,依此类推。

2)恕我直言,我从不使用像C0W这样的变量名称。

第3条)您无任何理由延长JFrame,因此请将代码更改为此。

public class Main{

    public static final int WIDTH = 400;
    public static final int HEIGHT = 300;
    public static final int SCALE = 2;
    private JFrame frame;
    private ImageIcon cow;
    private JLabel labelCow; // remove static

    public Main() {
        frame = new JFrame();
        frame.setLayout(new FlowLayout());

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.setSize(WIDTH*SCALE, HEIGHT*SCALE);
        frame.setLocationRelativeTo(null);

        cow = new ImageIcon(getClass().getResource("Cow Clicker/Resource/COW.png"));
        labelCow = new JLabel(cow);
        frame.add(cow);
        //pack(); you are using setSize
        setVisible(true);
    }





    public static void main(String[] args) {
               SwingUtilities.invokeLater(new Runnable(){
                     @Override
                     public void run(){
                         new Main();
                     }

                });
     }

}