Java 将背景图像添加到JPanel
我正在用Java开发一个棋盘游戏。对于游戏板本身,我试图将板的图像作为整个JPanel的背景,这填充了JFrame。我找到了一种方法来做到这一点,但只有当文件存储在本地时,它才需要能够从GUI所在的包中获取图像Java 将背景图像添加到JPanel,java,image,swing,jpanel,paintcomponent,Java,Image,Swing,Jpanel,Paintcomponent,我正在用Java开发一个棋盘游戏。对于游戏板本身,我试图将板的图像作为整个JPanel的背景,这填充了JFrame。我找到了一种方法来做到这一点,但只有当文件存储在本地时,它才需要能够从GUI所在的包中获取图像 package Gui; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.image
package Gui;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
//Proof of concept for setting an image as background of JPanel
public class JBackgroundPanel extends JPanel {
private BufferedImage img;
public JBackgroundPanel() {
// load the background image
try {
img = ImageIO.read(new File(
"C:\\Users\\Matthew\\Desktop\\5x5 Grid.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// paint the background image and scale it to fill the entire space
g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
}
}
我读过使用ImageIcon是一个很好的修复方法,但我不知道如何正确使用它
编辑1-我在这里找到了我的答案
我的工作区中的图片格式也有问题。谢谢你的帮助
getClass()
ImageIO.read(getClass().getResource("/images/5x5 Grid.jpg"));
例如…您可能希望搜索此网站,因为这已经被问了很多。如果您希望从jar文件访问图像,那么您将希望将其作为资源来执行,即,
ImageIO.read(getClass().getResourceAsStream(resourcePath))代码>资源路径将与类文件相关。注意:ImageIcon不是一个“好的解决方案”。是的,确切地说,是1+。不过,文件名中的空格有些地方让我发痒。@hovercraftfullofels是的,这些空格让我感到不安,而且这些空格是一个坏拷贝,文件名是5x5 Grid.gif,1个空格。现在我已经使用了您的示例img=ImageIO.read(getClass().getResource(“/images/5x5 Grid.jpg”);img变成了一种URL类型,paintComponet部分不能将URL作为参数否,ImageIO
采用URL
(除其他外),读取图像a返回一个buffereImage
。绘制buffereImage