2014-01-09 3 views
4

У меня есть окно, которое я должен держать в квадрате. Мой код:Изменение размера JavaFX Windows при сохранении пропорций?

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

Он меняет размер квадрата при растяжении, но имеет проблемы, когда я пытаюсь сделать его меньше? Иногда одна из сторон становится немного короче или длиннее другой. Это можно как-то исправить? Я сделал что-то неправильно в коде, который я сейчас использую?

ответ

1

Это не отвечает на ваш вопрос напрямую, но я думаю, что это действительно лучший UX, поскольку вы не ограничиваете пользователя. Вместо фиксации соотношения сторон сцены, рассмотреть возможность использования врезки раздуть содержание вы хотите оставаться площадь:

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 просто утилита, которая создает привязку со списком в переменные аргументы зависимостей)

Смежные вопросы