Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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 ImageIcon/Icon和JLabel不工作_Java_Image_Swing_Icons - Fatal编程技术网

Java ImageIcon/Icon和JLabel不工作

Java ImageIcon/Icon和JLabel不工作,java,image,swing,icons,Java,Image,Swing,Icons,为什么我的代码没有显示我插入的图像?没有编译错误或语法错误,但为什么会这样 import java.awt.FlowLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.SwingConstants; public class FirstUI extends JFrame{

为什么我的代码没有显示我插入的图像?没有编译错误或语法错误,但为什么会这样

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

public class FirstUI extends JFrame{

    private JLabel firstlabel;
    private JLabel secondLabel;
    private JLabel pie;
    public FirstUI(){
        super("Tittle");
        setLayout(new FlowLayout());
        firstlabel = new JLabel("Hello World");
        firstlabel.setToolTipText("Hello World");

        String path = "pie.png";
        Icon pie = new ImageIcon(path);
        secondLabel = new JLabel("Text with icon",pie,SwingConstants.LEFT);
        add(secondLabel);
        add(firstlabel);
    }
}
主类

import javax.swing.JFrame;
public class FirstUiTest {

    public static void main(String[] args){

         FirstUI MyUI = new FirstUI();
         MyUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         MyUI.setSize(320,280);
         MyUI.setVisible(true);
    }
}

我尝试了这个精确的代码,它成功了。似乎找不到pie.png。如果您使用的是eclipse,请将其放在项目根目录中(与/bin和/src所在的文件夹相同)。否则,将其放在运行java命令的同一目录中。

如果“pie.png”与
FirstUI.class的路径相同,请尝试使用:

Icon pie = new ImageIcon(ImageIO.read( FirstUI.class.getResourceAsStream( "pie.png" ) ) );

您的图像文件是类文件还是jar文件?您可以在哪里运行此文件?我认为您的代码唯一的问题可能是图标的路径。@Pratik它与我的类文件一起检查system.getproperty(“user.dir”)方法,它可以帮助您获得正确的路径。请参阅@user962206:您是否已解决了此问题,以查找图像的位置?如果不让我知道,你是如何制作这个项目的,是用简单的记事本,还是像Eclipse这样的IDE。我也许能给你指个方向:-)@user962206是的。我得说你做得很好。不知道你在做什么,我不知道你是否能做到,但代码完全符合犹太规范。原始代码调用了构造函数,该构造函数假定
字符串
表示一个
文件
。这将在部署时失败(在Jar中失败一次)。请注意,
newImageIcon(FirstUI.class.getResource(“pie.png”)
的效果与您编写的大致相同。