Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中显示图像时出错。AWT-EventQueue-0错误_Java - Fatal编程技术网

在java中显示图像时出错。AWT-EventQueue-0错误

在java中显示图像时出错。AWT-EventQueue-0错误,java,Java,执行我的代码时,此代码存在错误问题: ok.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String path = ""; String extension = ""; JFileChooser fil

执行我的代码时,此代码存在错误问题:

ok.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                String path = "";
                String extension = "";

                JFileChooser fileChooser = new JFileChooser();
                int returnValue = fileChooser.showOpenDialog(null);
                if (returnValue == JFileChooser.APPROVE_OPTION) {
                    File selectedFile = fileChooser.getSelectedFile();

                    path = selectedFile.getAbsolutePath();

                    int i = path.lastIndexOf('.');
                    if (i >= 0) {
                        extension = path.substring(i+1);
                    }
                }

                try {

                    if (extension.equals("ppm")) {

                        Paint.imgs.add(new ppm(path));

                img.setImage(resize(Paint.imgs.get(Integer.parseInt(path)).img, 544, 372));
                img.repaint();

                    }

                } catch (IOException ex) {
                    Logger.getLogger(getName()).log(Level.SEVERE, null, ex);
                }

            }

        });
特别是使用行
img.setImage(resize(Paint.imgs.get(Integer.parseInt(path)).img,544372));

看起来图像的路径是正确的,所以我不知道为什么它不起作用。 输出为:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "C:\Users\ciola\Desktop\pb.ppm"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at paint.binar$1.actionPerformed(binar.java:435)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    ...

有没有办法解决这个问题?

代码的逻辑有问题。正如上面所写的那样:

  • 获取文件的绝对路径名
  • 找到分机
  • 如果扩展名为“ppm”:
    • 将图像加载到缓存中(我猜这就是
      Paint.imgs.add(新ppm(路径))
      的目的
    • 使用
      path
      作为索引从缓存中获取图像
但问题是。路径不是索引。它是绝对路径名。它是完整路径名,包含目录部分和文件名部分…以及扩展名。您无法将其作为整数进行解析

解决方案:不清楚-这取决于您的缓存策略,以及图像的实际识别方式

  • 如果路径名确实包含与缓存索引方案相对应的唯一编号,则在解析之前修改
    get(Integer.parseInt(path))
    以从
    path
    提取唯一编号

  • 如果没有,则需要以其他方式执行图像缓存查找


建议:为了避免这样的问题,你需要有一个清晰的思维模型来描述你的代码实际应该如何工作


@ControlAltDel,那么,它不工作了。红色下划线

这强烈地表明,您通过尝试一些更改来消除编译错误,从而达到了现在的目的。这种方法有时有效:有时,您会很幸运!但它通常会导致一个毫无意义的程序……并且在您尝试运行该程序时会出现运行时错误


更好的办法是理解编译器告诉您的内容,然后理解错误的真正性质。编译器(或IDE)不理解您试图做什么。它的“建议”就是这样。选择哪种(如果有的话)取决于您做出理性的决定接受。

在路径上调用Integer.parseInt是错误的。这肯定是错误的wrong@ControlAltDel,则它不起作用。红色下划线。这是因为您试图引用数组中的某些内容。我不知道您希望如何从文件路径到数字索引