我有一个窗户,我必须保持正方形。我的代码是
primaryStage.minHeightProperty().bind(scene.widthProperty());
primaryStage.minWidthProperty().bind(scene.heightProperty());
它在扩展时会调整大小,但是当我尝试将其缩小时会出现问题吗? 有时其中一个边比另一边短一些或更长。有没有解决这个问题?我在目前使用的代码中做错了什么?
答案 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依赖列表创建绑定的实用程序)