Java Can';无法解决图像不显示问题
我试图显示的图像未正确显示 我正在使用Java Can';无法解决图像不显示问题,java,swing,embedded-resource,Java,Swing,Embedded Resource,我试图显示的图像未正确显示 我正在使用ImageIO进行阅读,然后再进行绘制 import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class imagestukje extends JPanel { privat
ImageIO
进行阅读,然后再进行绘制
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class imagestukje extends JPanel {
private BufferedImage image;
public imagestukje() {
try {
image = ImageIO.read(new File("images/lingo.jpg"));
} catch (IOException e) {
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, this);
}
}
为什么不显示图像?您好,在提出已解决的问题之前,您应该使用搜索功能
您可能会遇到两个问题:
- 未定义面板的大小
- 面板未重新喷漆
public class ImagePanel extends JPanel {
BufferedImage image;
Dimension size = new Dimension();
public ImagePanel() {
}
public ImagePanel(BufferedImage image) {
this.image = image;
this.size.setSize(image.getWidth(), image.getHeight());
}
public void setImage(BufferedImage image) {
this.image = image;
this.size.setSize(image.getWidth(), image.getHeight());
}
@Override
protected void paintComponent(Graphics g) {
if(this.image != null) {
g.drawImage(this.image, x, y, this);
}
}
@Override
public Dimension getPreferredSize() {
return this.size;
}
}
try {
image = ImageIO.read(new File("images/lingo.jpg"));
((ImagePanel) jPanel).setImage(image);
jPanel.invalidate();
jPanel.repaint();
} catch (IOException e) {
}
因此,在配置UI后,您可以使用以下任何图像初始化该面板:
public class ImagePanel extends JPanel {
BufferedImage image;
Dimension size = new Dimension();
public ImagePanel() {
}
public ImagePanel(BufferedImage image) {
this.image = image;
this.size.setSize(image.getWidth(), image.getHeight());
}
public void setImage(BufferedImage image) {
this.image = image;
this.size.setSize(image.getWidth(), image.getHeight());
}
@Override
protected void paintComponent(Graphics g) {
if(this.image != null) {
g.drawImage(this.image, x, y, this);
}
}
@Override
public Dimension getPreferredSize() {
return this.size;
}
}
try {
image = ImageIO.read(new File("images/lingo.jpg"));
((ImagePanel) jPanel).setImage(image);
jPanel.invalidate();
jPanel.repaint();
} catch (IOException e) {
}
不要留下空的
catch
子句!您不知道您是否成功读取了图像。至少把e.printStackTrace()
放在那里。我怀疑ImageIO.read失败了,但是没有办法判断,因为catch子句中没有任何东西可以澄清这一点。根据您的示例,与执行代码的位置相关的图像存储在哪里,它也应该脱离工作指导,也可以考虑;如果这不是重复的,请编辑您的问题,以包括一个显示您修改的方法。