我试图将图像"Pic.png"添加到这个JLabel "label1"并在JFrame "window1"上的JPanel "panel1"上显示它。但当我点击运行时,它不会显示我的图像。有人帮助吗?(我读过关于将其添加到源文件或其他东西,但我不确定我在做什么,因为我是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);
}
}
应该在最后一次调用时设置为可见窗口。不要使用null
布局1。这工作。
import java.net.*;
import javax.swing.*;
public class UIForIshidaQuery {
public static String url = "https://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);
}
}
- Java gui必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,使用不同地区的不同plaf。因此,它们不利于像素完美的布局。相反,使用布局管理器,或它们的组合以及布局填充和空白边框。
如果您正在使用IntelliJ IDEA:
- 右键单击项目根目录,选择New> directory;
- 将新目录命名为'resources',例如;
- 右键单击新创建的目录,选择"将目录标记为>资源根";
- 将您的图像文件添加到目录中;
- 正确访问文件:
CurrentClass.class.getClassLoader().getResource("pic.png").getFile();
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);