我是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");
}
答案 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);
}
}