scala.swing:尝试将图像缩放到窗口大小,但大小返回0

时间:2016-04-19 03:01:20

标签: swing scala

应该不言而喻,但我是一个相当新的人。

我试图制作一个简单的小东西,它会并排显示两个图像,就像窗口允许的那样大。

理论上发生了什么:

  • 我们得到一个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,那就太棒了。

1 个答案:

答案 0 :(得分:0)

size在您访问它时尚未确定。 但是,preferredSize是。如果您添加println(preferredSize),您将获得刚刚设置的尺寸。