Я пытаюсь создать пользовательский компонент для javafx, поэтому я делаю, чтобы мой класс расширял javafx.scene.control.Control и в конструкторе он отображал его содержимое.
Мои сомнения: как сделатьЯ делаю это "расти", чтобы заполнить все пространство, доступное на его родительском макете?Например, когда я вместо этого помещаю TextArea ...
Это сокращенный пример того, что я делаю:
@Override
public void start(Stage primarystage) throws Exception {
BorderPane bpane = new BorderPane();
mainscene = new Scene(bpane, 800, 600);
((BorderPane) this.mainscene.getRoot()).setCenter(t);
primarystage.setScene(mainscene);
primarystage.show();
}
В этом примере TextArea получит все пространство, предоставленное макетомдля этого.Я хочу, чтобы мой компонент делал то же самое!
Все, что я уже пытался сделать: - изменить свойства setMaxWidth / Height, setPrefWidth / Height, setMinWidth / Height;(когда я устанавливаю MinValues, он всегда использует эти значения для рисования, но больше не обновляет значение "width") - Попытался использовать Double.MAX_VALUE, чтобы принудительно увеличить размер, а не использовать макет;Все не сработало :( Должно быть, я как-то ошибаюсь ... - Я тоже немного заплакал, но даже это не дает ничего работать = '(
Может быть, подсказка, я поставил слушателя вот так,и каждый раз, когда я изменяю размер моего приложения / этапа, он обновляет TextArea. Но когда я добавляю этот слушатель, выполняю свой компонент, он никогда не обновляется ...
TextArea t = new TextArea("teste");
t.widthProperty().addListener(new ChangeListener() {
public void changed(ObservableValue observable, Object oldValue, Object newValue) {
System.out.println(oldValue + "|" + newValue);
}
});
Возможно, я передаю некоторые свойства или что-то забываю,Я не знаю ...
Я уже пробовал Google, но, похоже, документация по JavaFX слишком мала и поверхностна, и многие из них основаны на скрипте JavaFX ...
Я также принимаю любой учебник лучше, чем тот, который предлагает Oracle ...
Заранее спасибо за любую помощь ... Я много писал ... = O