Java - Swing显示图像不起作用

时间:2016-11-24 21:26:55

标签: java swing

我是Swing的新手,正在尝试使用下面的代码显示我已拖入项目的简单图像。但是,所有内容都会编译并运行,但图像不会显示出来。

顺便说一下,我真的更喜欢这样做,而不是从文件路径中获取图像。

代码:

public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub

    ImageProcessorApp IPA = new ImageProcessorApp();
    IPA.displayImage();
}

void displayImage() throws IOException {
    JFrame frame = new JFrame("frame");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500, 500);
    frame.setVisible(true);

    BufferedImage wPic = ImageIO.read(this.getClass().getResource("url-2.jpg"));
    JLabel wIcon = new JLabel(new ImageIcon(wPic));
    frame.add(wIcon);
    System.out.println("added image");

}

3 个答案:

答案 0 :(得分:0)

尝试使用

frame.validate();

添加图像后,在其他情况下,框架将不会更新! 如果这不起作用,请检查资源是否已找到!

工作版:

void displayImage() throws IOException {
        JFrame frame = new JFrame("frame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(500, 500);
        frame.setVisible(true);

        BufferedImage wPic = ImageIO.read(ClassLoader.getSystemResource("img/url-2.jpg"));
        JLabel wIcon = new JLabel(new ImageIcon(wPic));
        frame.add(wIcon);
        frame.validate();
        System.out.println("added image");

    }

答案 1 :(得分:0)

尽量将与帧相关的代码放在最后。 我想这样你就可以避免验证它。

答案 2 :(得分:0)

首先你必须调用方法.setVisible();只有在框架中添加了所有组件之后。  辅助 - 您必须修复Image的路径,只需在Main类旁边的项目中添加图像。  这是有效的解决方案:

  import javax.swing.*;
  import java.io.IOException;

  /**
     * Created by Алексей on 24.11.2016.
   */
 public class Main {

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

    displayImage();
}

public static void displayImage() throws IOException {
    JFrame frame = new JFrame("frame");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500, 500);

    JLabel imgLabel = new JLabel(new ImageIcon("src/url-2.jpg"));

    frame.add(imgLabel);

    frame.setVisible(true);
}
}