在保持宽高比的同时调整JavaFX Windows的大小?

时间:2014-01-09 10:12:00

标签: resize javafx javafx-2

我有一个窗户,我必须保持正方形。我的代码是

 primaryStage.minHeightProperty().bind(scene.widthProperty());
 primaryStage.minWidthProperty().bind(scene.heightProperty());

它在扩展时会调整大小,但是当我尝试将其缩小时会出现问题吗? 有时其中一个边比另一边短一些或更长。有没有解决这个问题?我在目前使用的代码中做错了什么?

1 个答案:

答案 0 :(得分:1)

这并没有直接回答你的问题,但我认为实际上是更好的用户体验,因为你不限制用户。不要固定舞台的宽高比,而是考虑使用插图来填充您想要保持正方形的内容:

private val DEF_PAD = 6.0
chart.paddingProperty.bind(boundValue(stage.widthProperty, stage.heightProperty) {
    // Maintain a square plot with padding
    val w = stage.getWidth
    val h = stage.getHeight
    val extra = DEF_PAD + 0.5 * Math.abs(w - h)
    if (w > h) {
        new Insets(DEF_PAD, extra, DEF_PAD, extra)
    } else if (h > w) {
        new Insets(extra, DEF_PAD, extra, DEF_PAD)
    } else {
        new Insets(DEF_PAD)
    }
})

(用Scala编写。boundValue只是一个用varargs依赖列表创建绑定的实用程序)