2011-12-15 3 views
1

Я пытаюсь получить доступ к некоторым изображениям из панели изображений с использованием относительного пути. В проекте Eclipse у меня есть папка с изображениями с изображением внутри. Вот мой код:Файлы изображений и относительные пути в scala

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

Кто-нибудь знает, как исправить этот путь?

ответ

3

я просто использовать AWT:

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

РЕДАКТИРОВАТЬ:

Кроме того, удалить \\PredatorPrey\\ от пути изображения.

EDIT 2: Просто объясните, что было не так с кодом, указанным в вопросе - когда имя пути к файлу начинается с «/» (или «\» в окнах), оно становится абсолютным (слэш представляет собой корень текущая файловая система/диск). Кроме того, код включал имя проекта в путь. Поскольку приложение запускается от внутри проекта, каталог проекта не нужен в пути (вы уже находитесь в этом каталоге!).

+0

Ваше сообщение помогло мне больше всего в устранении проблемы, но не из-за того, что вы ответили. Я вспомнил сразу после того, как увидел в тебе пост. Мне нужно было удалить название проекта PredatorPrey И начальное/из объявления пути. Может быть, вы можете отредактировать свой пост, чтобы сказать это, и я приму ваш ответ –

+0

@graphicdivine, спасибо за редактирование! – aishwarya

1

Если вы пытаетесь использовать относительный путь, вам нужно отбросить начальную косую черту в вашем пути.

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

Я пробовал то же самое. Когда я использовал относительный путь, я получаю javax.imageio.IIOException: не могу прочитать входной файл! ecxeption. BUt все работает нормально, когда я использую абсолютный путь. –

Смежные вопросы