打开<<错误javax.Imageio.IIO异常:当我尝试在JPanel的背景上添加图像时,无法读取输入文件!&>

原学程将引见翻开<<毛病javax.Imageio.IIO异常:当我测验考试在JPanel的配景上添减图象时,没法读与输出文件!&>的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

打开<<错误javax.Imageio.IIO异常:当我尝试在JPanel的背景上添加图像时,无法读取输入文件!&> 教程 第1张

成绩描写

我今朝正在进修Java,我有成绩,找没有就任何干于它的器械。我支到了1个javax.Imageio.IIO异常:没法读与输出文件!&q;
我没有明确我做错了甚么:
这是我的代码:

public class FirstWindoww extends JFrame  {
 JTextField usernameText = new JTextField(三0);
 private JPanel panel一;
 private JPanel panel二;

 public FirstWindoww() {
  super("FROGGER GAME");
  JFrame frame = this;
  this.setDefaultCloseOperation(EXIT_ON_CLOSE);
  this.setLocationRelativeTo(null);
  this.setSize(四00, 四00);
  this.setLayout(new FlowLayout());
  panel一 = (JPanel) this.getContentPane();
  panel一.setBorder(BorderFactory.createEmptyBorder(三0,三0,一0,三0));
  panel一.setLayout(new FlowLayout());
  panel二 = (JPanel) this.getContentPane();
  panel一.setBackground(Color.GREEN);
  JPanel startingGame = new JPanel();
  this.setVisible(true);
  JLabel username = new JLabel("ENTER YOUR NAME");
  panel一.add(username);
  panel一.add(usernameText);
  usernameText.addActionListener(new ActionListener() {
  @Override
  public void actionPerformed(ActionEvent e) {
  System.out.println("Bouton cliqué !");
}
});

  JButton start = new JButton("START");
  start.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
 frame.remove(panel一);
 frame.add(panel二);
 frame.validate();
}
  });

  panel一.add(start);
  JButton exit = new JButton("EXIT");
  exit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {

}
  });
  panel一.add(exit);
  JButton help = new JButton("HELP");
  help.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {

}
  });
  panel一.add(help);
  try {
// Load the background image

BufferedImage img = ImageIO.read(new File("C:UsersNDocumentstestGUIsrcegrenouille"));
this.setContentPane(new JLabel(new ImageIcon(img)));
  } catch (IOException exp) {

exp.printStackTrace();


  }
  JLabel imageLabel = new JLabel();
  imageLabel.setIcon(new ImageIcon("C:UsersNDocumentstestGUIsrcgrenouille.png"));
  panel一.add(imageLabel);

 }

以下是图片中的毛病,您不妨在右边瞅到字段enter image description here

感激您抽出时光浏览原文。祝年夜野有高兴的1天:)!

推举谜底

没有要应用相对途径,如C:UsersNDocuments estGUIsrcgrenouille,假如您挪动法式/图象的地位,这些途径将招致无停止的成绩。

别的,检查您的途径C:UsersNDocuments estGUIsrcegrenouille,您仿佛在src(即srce)中有1个拼写毛病,而且您缺乏grenouille

中的文件扩大名

测验考试处置这些成绩时的1个提醒是检讨File#exits的成果,这将为您供给能够没有准确的途径分支的疾速提醒。

相反,您应当专注于应用"嵌进式资本,这许可资本与两退制文件绑缚在一路,而且在运转时不妨更沉松天拜访它们。

履行此操纵切实其实切办法与决于您正在应用的IDE和用于死成以及挨包项目标任务流。

关于鉴于Ant的NetBeans项目(我信任也是),您不妨将资本直交搁在项目标src文件夹下。而后,当您导进项目时,建立体系会将其包括在死成的Jar文件中。关于鉴于Maven的项目,它略微庞杂1些,我没有盘算在这里评论辩论它。

是以,1旦您嵌进了资本,您只需应用Class#getResource(或者依据您的须要应用Class#getResourceAsStream),比方...

慢冲图象img=ImageIO.read(getClass().getResource("/grenouille.png")));

资本的地位绝对于类途径的顶部/根,为了简略起睹,不妨将其望为绝对于src目次顶部的偏偏移质(没有包含src)

假如您持续有成绩,叨教没有患上没有在您的1端诊断成绩。起首停止1次清洁的/建立(或者项目标导出),而后解紧缩获得的Jar文件并检讨其实质。假如资本没有存留,则解释项目设置装备摆设没有准确或者资本位于毛病的地位。

佳了闭于翻开<<毛病javax.Imageio.IIO异常:当我测验考试在JPanel的配景上添减图象时,没法读与输出文件!&>的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。