У меня есть приложение JavaFX 2.0 с FXML. Я хочу, чтобы компоненты (TextFields, ComboBoxes, макеты и т.д.) Изменялись при изменении размера окна с приложением. Так что...
- Как написано на документации Oracle для JavaFX, чтобы сделать что-то вроде этого с помощью форм, существует несколько специальных свойств для фигур:
При создании GUI-приложений с JavaFX вы заметите, что некоторые классы API уже реализуют свойства. Например, класс
javafx.scene.shape.Rectangle
содержит свойства дляarcHeight
,arcWidth
,height
,width
,x
иy
. Для каждого из этих свойств будут соответствующие методы, которые соответствуют ранее описанным соглашениям. Например,getArcHeight()
,setArcHeight(double)
,arcHeightProperty()
, которые вместе указывают (как разработчикам, так и инструментам), что данное свойство существует. *
-
Чтобы добавить слушателя на сцену, я должен сделать что-то вроде:
stage.resizableProperty().addListener(new ChangeListener<Boolean>(){ @Override public void changed(ObservableValue<? extends Boolean> arg0, Boolean arg1, Boolean arg2){ throw new UnsupportedOperationException("Not supported yet."); } });
Итак, есть два вопроса:
- Чтобы сделать некоторые привязки, я должен получить свою ступень в классе контроллера. Итак - как я могу получить этап в классе контроллера?
- Похоже, что элементы управления пользовательского интерфейса не имеют свойств width\height, которые должны быть привязаны к чему-то. Или, возможно, я их не нашел.
Итак, как я могу решить свою проблему?
UPD. О сценаристе Сергея Гринева: когда я использую Ctrl + K на моем компоненте (скажите, чтобы он занимал всю область его родительского компонента) - все в порядке.
Но что, если я хочу сказать, что мой компонент занимает 50% области? Например, у меня есть вкладка с двумя VBoxes. Ширина закладки 100px. Ширина Vbox 50px для каждого. VBox1 имеет x1 = 0 и x2 = 50, а VBox2 имеет x1 = 50, а x2 = 100, Затем я изменяю размер окна с помощью приложения JavaFX. Теперь у меня есть вкладка Width = 200px. Но моя ширина VBoxes по-прежнему равна 50px: VBox1 имеет x1 = 0 и x2 = 50, а VBox2 имеет x1 = 150 и x2 = 200. И мне нужно, чтобы они были VBox1 x1 = 0 и x2 = 100 и VBox2 x1 = 100 и x2 = 200 > . Где значения x1 и x2 являются координатами углов VBoxes.
Как сценарий поможет мне в этой ситуации?