2

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

  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)
    }
  }

有谁知道如何修复该路径?

4

2 回答 2

4

我只使用awt:

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

编辑:

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

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

于 2011-12-15T18:11:20.373 回答
1

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

imagePath = ("PredatorPrey\\images\\gnp-canadian-lynx-kitten.jpg")
于 2011-12-15T18:09:50.367 回答