【问题标题】:Java ImageIcon/Icon and JLabel is not workingJava ImageIcon/Icon 和 JLabel 不起作用
【发布时间】:2011-12-31 09:18:20
【问题描述】:

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

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);
    }
}

【问题讨论】:

  • 你的镜像文件是class文件还是jar文件?你可以在哪里运行这个文件
  • 我认为您的代码可能存在的唯一问题是图标的路径。
  • @Pratik 它和我的类文件一起
  • 检查 system.getproperty("user.dir") 方法,它可以帮助您获得正确的路径。见Java Doc
  • @user962206 :您是否已经解决了这个问题,以查找图像的位置?如果不让我知道,你是如何制作这个项目的,是用简单的记事本还是一些 IDE,比如 Eclipse。我也许能给你一些方向:-)

标签: java image swing icons


【解决方案1】:

如果“pie.png”在FirstUI.class的同一路径中尝试使用:

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

【讨论】:

  • 原始代码调用了假定String 代表File 的构造函数。这将在部署时失败(一次在 Jar 中)。请注意,new ImageIcon(FirstUI.class.getResource( "pie.png" ) ); 的效果与您写的内容大致相同。
【解决方案2】:

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

【讨论】:

  • @user962206 是的。我会说你过得很好。不知道你在做什么,我不知道你是否到达那里,但代码完全符合犹太教规。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-16
  • 2011-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-19
  • 1970-01-01
相关资源
最近更新 更多