2016-04-19 1 views
0

これはおそらく言いようがありますが、私はかなり新しくスイングしています。scala.swing:イメージをウィンドウサイズにスケーリングしようとしましたが、サイズは0を返します

私は、ウィンドウが許す限り、2つの画像を並べて表示する簡単な小さなものを作ろうとしています。理論的には

何が起こっては次のとおりです。

  • は、我々は、この場合の001.JPGで、イメージアイコンを取得します。

  • imageIconの幅/高さの比率を把握します。

  • imageIconを画像に変換します。

  • 私たちは、そのイメージを新しい正しいサイズのイメージに変換します。

  • 画像を画像アイコンに戻します。

このすべてが故障した私は、ウィンドウのサイズを取得するために見つけた唯一の方法はsizeですが、それが戻って0を保持しているため。これは私が今持っているコードです

:余談として

class UI extends MainFrame { 
    title = "Matt's window header" 
    preferredSize = new Dimension(1920, 1080) 
    var imageIcon = new ImageIcon("001.jpg") 
    val imgRatio = imageIcon.getIconWidth.toDouble/imageIcon.getIconHeight.toDouble 
    println(size) 
    pack() 
    println(imgRatio) 
    val image = imageIcon.getImage() 
    val newimg = image.getScaledInstance(size.width, (size.width * imgRatio.toInt), java.awt.Image.SCALE_SMOOTH) 
    imageIcon = new ImageIcon(newimg) 
    contents = new Label { 
     icon = imageIcon 
    } 
} 

誰かが私にだけではなく001.JPGで、異なるイメージをロードする方法についての情報を与えることができれば、それは素晴らしいことです。

答えて

0

sizeは、アクセスした時点で決定されません。 ただし、preferredSizeです。 println(preferredSize)を追加すると、設定した次元が表示されます。

+0

ありがとうございます! ウィンドウのサイズを知るにはどうすればよいですか?私はウィンドウが好ましいサイズであると仮定する必要はありません。 – Jones

関連する問題