2011-12-15 16 views
1

相対パスを使用して画像パネルからの画像にアクセスしようとしています。 Eclipseプロジェクトでは、画像の中に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) 
    } 
    } 

どのようにそのパスを修正するのですか?

答えて

3

EDIT 2: ファイルパス名が "/"(またはWindowsでは "\")で始まる場合、質問に引用されているコードの問題を説明するだけで、スラッシュは絶対パスになります現在のファイルシステム/ドライブ)。また、コードにはプロジェクト名がパスに含まれています。アプリケーションはの中での中に実行されているので、プロジェクトディレクトリはパスに必要ではありません(すでにそのディレクトリに入っています!)。

+0

あなたの記事は私が問題を解決するのに最も役立ちましたが、あなたが答えたものが原因ではありません。私はあなたが投稿した直後に思い出した。私はプロジェクト名PredatorPreyとパスの宣言からの最初の/を削除する必要がありました。多分あなたはそれを言うためにあなたの投稿を編集することができ、私はあなたの答えを受け入れるでしょう –

+0

@graphicdivine、おかげで多くの編集! – aishwarya

1

相対パスを使用する場合は、パスに最初のスラッシュをドロップする必要があります。画像パスから\\PredatorPrey\\を削除、また

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

EDIT:私はAWTを使用

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

私はまったく同じことを試みました。相対パスを使用すると、javax.imageio.IIOExceptionが発生します:入力ファイルを読み込めません! ecxeption。絶対パスを使用すると、すべてうまく動作します。 –

関連する問題