Я работаю над проектом javaFX, в котором мне нужен точный контроль над размером узла. Мой код в настоящее время корректно обновляет prefWidthProperty при необходимости, а минимальный и максимальный размер используется для использования размера pref, но widthProperty не обновляется.JavaFX widthProperty not refreshing
Я проверил это с заявлениями печати, добавленными как слушатели в свойства. Обновления PrefWidthProperty, widthProperty нет (до тех пор, пока я не щелкнул узел, возможно, не сфокусировался?)
Я пробовал запрашивать макеты как для себя, так и для своего родителя, то же самое с фокусом, не работал.
В настоящее время я действительно не знаю, как исправить эту ошибку, которая очень раздражает. кажется, что в настоящее время все всегда отстает от одного макета.
Код, используемый для установки размера и проверки изменений:
//Set the size
this.setMinSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE);
this.setMaxSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE);
this.prefWidthProperty().bind(getTotalWidthProperty());
public ObservableValue<? extends Number> getTotalWidthProperty() {
return rightArgument.layoutXProperty().add(rightArgument.translateXProperty()).add(rightArgument.widthProperty()).add(H_GAP);
}
//Check for change:
this.prefWidthProperty().addListener(p -> System.out.println("FB_Pref_"+System.currentTimeMillis() + " " + this.getPrefWidth()));
this.widthProperty().addListener(p -> System.out.println("FB______"+System.currentTimeMillis() + " " + this.getWidth()));
Как сказано выше, FB_Pref получает правильно печатается на время, FB_____ печатается слишком поздно.
Не могли бы вы предоставить немного больше кода, пожалуйста? – NwDev
Какие части вы хотели бы видеть больше? Я добавил несколько бит о том, как я устанавливаю prefWidthProperty. – i3anaan