【问题标题】:Image files and relative paths in scalascala中的图像文件和相对路径
【发布时间】:2012-01-21 09:55:25
【问题描述】:

我正在尝试使用相对路径从图像面板访问一些图像。在 Eclipse 项目中,我有一个名为 images 的文件夹,里面有图像。这是我的代码:

  val top = new MainFrame {

    title = "Predator and Prey Agent simulation"

    val buttonExit = new Button {
      text = "Exit"
      action = Action("Exit") {
        WorldActor.run(false)
        closer
      }
    }

    val buttonStart = new Button {
      text = "Start"
      action = Action("Start") {
        switchPanes()
      }
    }

    val s = new Dimension(500, 700)

    contents = new ImagePanel(0, 1) {
      for (i <- 0 until 5){
        contents+= new Label("")
      }
      contents += buttonStart
      contents += buttonExit
      contents+= new Label("")

      minimumSize = s
      maximumSize = s
      preferredSize = s
      imagePath = ("\\PredatorPrey\\images\\gnp-canadian-lynx-kitten.jpg")

      }
    }

每次运行上述代码时,我都会收到 javax.imageio.IIOException。这是 imapePanel 类:

case class ImagePanel(rows0: Int, cols0: Int) extends GridPanel(rows0, cols0) {
  private var _imagePath = ""
  private var bufferedImage: BufferedImage = null

  def imagePath = _imagePath

  def imagePath_=(value: String) {
    _imagePath = value
    bufferedImage = ImageIO.read(new File(_imagePath))
  }

  override def paintComponent(g: Graphics2D) = {
    if (null != bufferedImage) g.drawImage(bufferedImage, 0, 0, null)
    }
  }

有谁知道如何修复这条路径?

【问题讨论】:

    标签: file scala file-io scala-swing


    【解决方案1】:

    我只使用awt:

    import java.awt.Toolkit
    val image = Toolkit.getDefaultToolkit.createImage("images/kitten.jpg")
    

    编辑:

    另外,从图片路径中删除\\PredatorPrey\\

    编辑 2: 只是解释问题中引用的代码有什么问题 - 当文件路径名以“/”(或 Windows 中的“\”)开头时,它变成绝对的(斜杠表示当前文件系统/驱动器的根目录)。此外,代码在路径中包含项目名称。由于应用程序是从项目内部运行的,因此路径中不需要项目目录(您已经在该目录中!)。

    【讨论】:

    • 您的帖子在解决问题方面对我帮助最大,但并不完全是因为您的回答。刚看到你的帖子就想起来了。我需要从路径声明中删除项目名称 PredatorPrey 和初始 / 。也许你可以编辑你的帖子说,我会接受你的回答
    【解决方案2】:

    如果您尝试使用相对路径,则需要在路径中删除开头的斜杠。

    imagePath = ("PredatorPrey\\images\\gnp-canadian-lynx-kitten.jpg")
    

    【讨论】:

    • 我尝试了同样的事情。当我使用相对路径时,我得到一个 javax.imageio.IIOException: Can't read input file!例外。但是当我使用绝对路径时一切正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 2013-07-25
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多