2016-04-19 26 views
0

它应该不用说,但我是相当新的摆动。scala.swing:试图缩放图像到窗口大小,但尺寸返回0

我试图做一个简单的小东西,它将并排显示两个图像,只要窗口允许。

在理论上有什么发生的事情是:

  • 我们得到一个ImageIcon,在这种情况下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