Java JPanel上没有显示图像
我花了大约两个小时在我的Jpanel上显示一张800*600的“背景图片”,它根本就不显示,这里怎么了 顺便说一句:有时我想在应用程序运行时更改我的背景,我不应该使用除main之外的其他方法吗?如果是的话,这种方法会是什么样子?我仍然会遇到诸如“无法进行静态引用…”之类的错误Java JPanel上没有显示图像,java,swing,Java,Swing,我花了大约两个小时在我的Jpanel上显示一张800*600的“背景图片”,它根本就不显示,这里怎么了 顺便说一句:有时我想在应用程序运行时更改我的背景,我不应该使用除main之外的其他方法吗?如果是的话,这种方法会是什么样子?我仍然会遇到诸如“无法进行静态引用…”之类的错误 缺少图像等资源是一个常见问题。您确定“Title.png”(区分大小写)在您的类路径中也可用吗 把这个方法放在你的课堂上 private Image requestImage() { Image im
缺少图像等资源是一个常见问题。您确定“Title.png”(区分大小写)在您的类路径中也可用吗 把这个方法放在你的课堂上
private Image requestImage() {
Image image = null;
try {
image = ImageIO.read(new URL("http://www.johnlennon.com/wp-content/themes/jl/images/home-gallery/2.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
return image;
}
打电话
label.setIcon(requestImage());
如果这样做有效,则找不到Title.png。(最好将所有图像文件资源全部小写。)
此外,如果希望图像成为场景的一部分,则在JLabel上设置和设置图像是可以的。但是,对于背景图像,这是首选方法:
JPanel panel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, null);
}
};
尝试:
如果从静态函数调用非静态函数,则会出现“无法进行静态引用…”错误。->只需将“static”添加到新的方法头中(如“publicstaticvoidchangebackground(Jpanel面板,ImageIcon img){…}),您就可以将图像的宽度和高度设置为0,并想知道为什么它没有显示出来?希望这可以帮助在
Jpanel/JComponent
上显示图像。对于在运行时更改映像,可能是这样,可以提供帮助。
JPanel panel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, null);
}
};
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
public class ImageInFrame {
public static void main(String[] args){
try{
String path = "Image1.jpg";
File file = new File(path);
BufferedImage image = ImageIO.read(file);
JLabel label = new JLabel(new ImageIcon(image));
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(label);
f.pack();
f.setLocation(200,200);
f.setVisible(true);
catch(Exception e){
e.printStackTrace();
}
}
}