2014-01-09 33 views
4

我有一个窗户,我必须保持方形。我的代码是在保持宽高比的同时调整JavaFX Windows?

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

它确实在扩展时调整了正方形的大小,但在尝试使其更小时遇到问题? 有时候其中一边会比另一边短一些或长一些。有没有解决这个问题?我在当前使用的代码中做错了什么?

回答

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仅仅是创建一个程序,并把可变参数的依赖列表中绑定)

相关问题