有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JLabel不显示图像

我不确定问题出在哪里。它在路上吗?虽然代码语法中没有任何错误,但图像不会显示。我应该提供整个路径,还是将图像放在目录中并命名?谢谢

public class NetworkingGame {

private JFrame jfrm;

NetworkingGame(){
    jfrm = new JFrame("Angry Painters");
    jfrm.setSize(800, 480);
    jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jfrm.setVisible(true);

}// end of constructor

public void ImageLoading(){
    ImageIcon i = new ImageIcon("C:/Users/TOSHIBA/Documents/NetBeansProjects/NetworkingGame/build/classes/angry-painters.jpeg");
    JLabel jl = new JLabel(i);
    jfrm.add(jl);
}

public static void main(String[] args) throws Exception{

    SwingUtilities.invokeLater(new Runnable(){

        @Override
        public void run(){

            NetworkingGame ng = new NetworkingGame();
            ng.ImageLoading();
        } // end of run method
    }); // end of Runnable

   }//end of main method
}//end of class NetworkingGame

共 (3) 个答案

  1. # 1 楼答案

    在IntellijIdea。2021年 就我而言,它只是不读取图像文件。 要解决这个问题:

    1在项目根目录中创建res文件夹('src的文件夹同级)

    2处理文件中的工件->;项目结构->;由+,-

    3。文件->;项目结构->;人工制品->;输出布局选项卡将最终jar的结构设置为'res'文件夹、应用程序根包文件夹(比如'com')和'META-INF'文件夹。用你的app/output文件夹中的内容和1中提到的'res'内容填写它们step'res'

    4之后,在“项目结构”“模块”中右键单击“资源”,并将其标记为资源

    5声明如下图像:

    ImageIcon loadingLcl = new ImageIcon(this.getClass().getResource("/res/32.gif")); 在放入JLabel之前

    此外,在初始化应用程序时最好只读取一次图像。否则有时它会抛出IOException。所以如果可能的话,一开始就处理好。就像他们在游戏制作中一样

  2. # 2 楼答案

    我觉得你的代码不喜欢你绑定图像的方式

    假设用户将图像/图标放在源文件夹中

    ImageIcon i=new javax.swing.ImageIcon(getClass().getResource("myimage.jpeg"))
    

    或者如果您在源文件夹中创建了一个文件夹

    InputStream stream = this.getClass().getClassLoader().getResourceAsStream("/images/image.jpg");
    BufferedImage bufferedImage=ImageIO.read(stream);
    ImageIcon icon= new ImageIcon(bufferedImage);
    
  3. # 3 楼答案

    尝试使用如下路径:

    jLabel1.setIcon(new ImageIcon("c:\\Users\\xyz\\Documents\\NetBeansProjects\\game\\src\\images.jpg"));
    

    更新

    如果dis也不起作用,那么

        jLabel.setIcon(new ImageIcon(getClass().getResource("/image.jpg")));
        jLabel.setText("jLabel");
    

    应该。image.jpg应该在项目文件夹中