Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么这个简单的代码不起作用_Java_Swing_Jlabel - Fatal编程技术网

Java 为什么这个简单的代码不起作用

Java 为什么这个简单的代码不起作用,java,swing,jlabel,Java,Swing,Jlabel,我对这本书中的简单示例代码有困难。它应该在一个窗口(南北标签)中两次表示同一图像,一个在另一个窗口的上方。当我运行它时,它会显示,而不是(我很抱歉没有剪切图像或调整它们的大小)下面是我的代码。我正在Ubuntu 13.04上运行EclipseJuno package gui; import java.awt.BorderLayout; import javax.swing.*; public class Gui { public static void main(String[]

我对这本书中的简单示例代码有困难。它应该在一个窗口(南北标签)中两次表示同一图像,一个在另一个窗口的上方。当我运行它时,它会显示,而不是(我很抱歉没有剪切图像或调整它们的大小)下面是我的代码。我正在Ubuntu 13.04上运行EclipseJuno

package gui;
import java.awt.BorderLayout;
import javax.swing.*;

public class Gui {


    public static void main(String[] args) {

        JLabel northLabel = new JLabel ( "North" );

        ImageIcon labelIcon = new ImageIcon ("GUItip.gif");

        JLabel centerLabel = new JLabel (labelIcon);
        JLabel southLabel = new JLabel (labelIcon);

        southLabel.setText("South");
        JFrame application = new JFrame();

        application.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

        application.add(northLabel, BorderLayout.NORTH);
        application.add(centerLabel, BorderLayout.CENTER);
        application.add(southLabel, BorderLayout.SOUTH);

        application.setSize(300, 300);
        application.setVisible(true);


    }

}

图像可能没有正确加载。尝试使用Try/catch块查看是否是这种情况

例:


您需要专注于以下陈述:

ImageIcon labelIcon = new ImageIcon ("GUItip.gif");
启动新图像图标时。。默认情况下,它会在执行文件夹中搜索提供的地址,即在这种情况下,应在工作区/用户目录中搜索“GUItip.gif”

一种解决方案是在工作区(程序执行)文件夹中提供GUItip.gif图像。 另一个解决方案是提供绝对路径。。例如

C:\USER\Workspace\project_name\GUItip.gif
尽管更好的方法是创建一个特定的文件夹,在其中保存项目中使用的所有图像。创建带有文件夹绝对路径的最终静态字符串变量。现在,该项目中的任何程序员都很容易知道在哪里查找图像。
有一些很好的方法可以使用此映射。。通过XML在开始时加载。。通过resourcebundle等,但这是一个完全不同的主题。

您可能没有在正确的位置查找图像。尝试使用图像的绝对路径。或者找出用户目录所在的位置并将图像放在那里。或者如果图像嵌入了应用程序,请使用
Gui.class.getResource(“GUItip.gif”)相反-更好的是,使用
ImageIO
,它将抛出一个更有意义的异常…硬编码绝对路径不是一个好做法。将图像放置在项目中的某个位置,并提供相对于根文件夹的路径。谢谢大家。我只需要使用完整的路径名,而不是像书中那样复制它。但我确实把图像放在了项目目录中(就像我的老师告诉我的那样)。无论如何,再次谢谢你。
C:\USER\Workspace\project_name\GUItip.gif