试图将图像添加到标签但是没有工作?

时间:2016-08-25 09:18:22

标签: java swing netbeans jlabel embedded-resource

我试图添加图片" Pic.png"这个JLabel" label1"并将其显示在JPanel" panel1"在JFrame" window1"。但是当我点击它时它并没有显示我的图像。有人帮吗? (我读过将它添加到源文件或其他内容,但我不确定我在做什么,因为我是Java的新手。如果没有图像,它是否无法访问图片在源头?)

public class UIForIshidaQuery {

    public static void main(String[] args) {
        System.out.println("Running...");

        JFrame window1 = new JFrame();
        window1.setVisible(true);
        window1.setSize(1080, 720);
        window1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel1 = (JPanel) window1.getContentPane();
        JLabel label1 = new JLabel();
        panel1.setLayout(null);
        ImageIcon image = new ImageIcon("C:\\Users\\BC03\\Pictures\\Saved Pictures\\Other\\Pic.png");
        label1.setIcon(image);
        label1.setBounds(500, 500, 500, 500);
        panel1.add(label1);
    }
}

2 个答案:

答案 0 :(得分:2)

应将窗口设置为最后一次调用。不要使用null布局 1 。这很有效。

import java.net.*;
import javax.swing.*;

public class UIForIshidaQuery {

    public static String url = "http://i.stack.imgur.com/gJmeJ.png";

    public static void main(String[] args) throws MalformedURLException {
        System.out.println("Running...");

        JFrame window1 = new JFrame();
        window1.setSize(1080, 720);
        window1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel1 = (JPanel) window1.getContentPane();
        JLabel label1 = new JLabel();
        //panel1.setLayout(null);
        ImageIcon image = new ImageIcon(new URL(url));
        label1.setIcon(image);
        //label1.setBounds(500, 500, 500, 500);
        panel1.add(label1);
        window1.setVisible(true);
    }
}
  1. Java GUI必须使用不同语言环境中的不同PLAF来处理不同的操作系统,屏幕大小,屏幕分辨率等。因此,它们不利于像素完美布局。而是使用布局管理器,或combinations of them以及white space的布局填充和边框。

答案 1 :(得分:1)

如果您使用的是IntelliJ IDEA:

  1. 右键单击项目根目录,然后选择New>目录;
  2. 例如,调用新目录“resources”;
  3. 右键单击新制作的目录,然后选择Mark Directory As>资源根;
  4. 在目录中添加您的图像文件;
  5. 正确访问您的文件: CurrentClass.class.getClassLoader().getResource("pic.png").getFile();
  6. ImageIcon可以像这样初始化:

    File file = new File(CurrentClass.class.getClassLoader().getResource("pic.png").getFile());
            BufferedImage image = null;
            try {
                image = ImageIO.read(file);
            } catch (IOException e) {
                e.printStackTrace();
            }
            ImageIcon imageIcon = new ImageIcon(image);