scala中的图像文件和相对路径

时间:2011-12-15 18:02:38

标签: file scala file-io scala-swing

我正在尝试使用相对路径从图像面板访问某些图像。在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)
    }
  }

有谁知道如何解决这条道路?

2 个答案:

答案 0 :(得分:4)

我只是使用awt:

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

编辑:

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

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

答案 1 :(得分:1)

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

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