【问题标题】:scala.swing: Trying to scale images to window size, but size returns 0scala.swing:尝试将图像缩放到窗口大小,但大小返回 0
【发布时间】:2016-04-19 03:01:20
【问题描述】:

这应该是不言而喻的,但我对摇摆还很陌生。

我正在尝试做一个简单的小东西,它可以并排显示两个图像,只要窗口允许的话。

理论上发生了什么:

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

【问题讨论】:

    标签: swing scala


    【解决方案1】:

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

    【讨论】:

    • 谢谢!那么判断窗口大小的最佳方法是什么?我不想假设窗口处于首选大小。
    猜你喜欢
    • 1970-01-01
    • 2013-06-14
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    相关资源
    最近更新 更多