[英]Adding image to JPanel in Eclipse
我的主班有这个:
panel.setBackground(Color.green);
ImagePanel background = new ImagePanel("Images/background.png");
panel.add(background);
但是当我运行它时,我只会看到绿色背景并得到异常:
“ javax.imageio.IIOException:无法读取输入文件!”
这是ImagePanel类:
public class ImagePanel extends JPanel {
private BufferedImage img;
public ImagePanel(String path) {
// load the background image
try {
img = ImageIO.read(new File(path));
} 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);
}
}
我正在使用Eclipse,这是我的图像所在的位置:src / Images / background.png
好的,现在我有:
ImagePanel background = new ImagePanel("src/Images/background.png");
并且不再显示异常,但是我仍然看不到图像,只有绿色背景...
这是完整的方法:
private void createAndShowGUI() {
frame = new JFrame("Java 2048 By Xandru");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLayout(null);
panel = new JPanel();
panel.setLayout(null);
panel.setBounds(0, 0, HEIGHT, WIDTH);
panel.setBackground(Color.green);
frame.add(panel);
//Add the background
ImagePanel background = new ImagePanel("src/Images/background.png");
panel.add(background);
//Create the main Frame
frame.pack();
//Set dimensions
frame.setSize(WIDTH, HEIGHT);
//Center it
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
int x = (int) ((screen.getWidth() - frame.getWidth()) /2);
int y = (int) ((screen.getHeight() - frame.getHeight()) /2);
frame.setLocation(x, y);
//Set visible
frame.setVisible(true);
}
从资源文件夹中查找图像2.png
Image image= ImageIO.read(new File("resources/2.png"));
要么
如果图片与该类位于同一包(文件夹)中,请尝试执行此操作
Image image = ImageIO.read(getClass().getResourceAsStream("2.png"));
这是项目结构
-编辑-
尝试这种方式
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
} catch (UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame("Java 2048 By Xandru");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
// Add the background
ImagePanel background = new ImagePanel("src/images/2.png");
frame.add(background);
// Create the main Frame
frame.pack();
// Set dimensions
frame.setSize(new Dimension(width, height));
// Center it
frame.setLocationRelativeTo(null);
// Set visible
frame.setVisible(true);
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.