Как связать изменение размера этапа с изменением размера компонентов?

У меня есть приложение JavaFX 2.0 с FXML. Я хочу, чтобы компоненты (TextFields, ComboBoxes, макеты и т. д. )изменялись в размерах при изменении размера окна с приложением. Итак...

  • Как написано в документации Oracle для JavaFX , чтобы сделать что-то подобное с фигурами, у фигур есть несколько специальных свойств:

При создании приложений с графическим интерфейсом с помощью JavaFX вы заметит, что определенные классы в API уже реализуют свойства. Например, класс javafx.scene.shape.Rectangleсодержит свойства для arcHeight, arcWidth, height, width, xи y. Для каждого из этих свойств будут соответствующие методы, соответствующие ранее описанным соглашениям. Например, getArcHeight(), setArcHeight(double), arcHeightProperty(), которые вместе указывают (как разработчикам, так и инструментам ), что данное свойство существует.*

  • Чтобы добавить слушателя к этапу, я должен сделать что-то вроде:

       stage.resizableProperty().addListener(new ChangeListener(){
        @Override
        public void changed(ObservableValue arg0, Boolean arg1, Boolean arg2){
            throw new UnsupportedOperationException("Not supported yet.");
        }
    
    });
    

Таким образом, есть два вопроса:

  • Чтобы сделать некоторую привязку, я должен получить свой этап в классе контроллера. Итак, -как я могу получить этап в классе контроллера?
  • Похоже, элементы управления пользовательского интерфейса не имеют свойств ширины\высоты, чтобы быть привязанными к чему-либо. Или, может быть, я их не нашел.

Итак, как мне решить мою проблему?

УПД. О компоновщике сцен Сергею Гриневу :Когда я использую Ctrl+K на своем компоненте (, говорю ему, чтобы он занимал всю область своего родительского компонента )-, все в порядке.

Но что, если я хочу, чтобы мой компонент занимал 50% площади? Например, у меня есть вкладка с двумя VBox. Ширина вкладки составляет 100 пикселей . Ширина Vbox составляет 50 пикселей для каждого. VBox1 имеет x1=0 и x2=50 , а VBox2 имеет x1=50 и x2=100 . Затем я изменяю размер окна с помощью приложения JavaFX.Теперь у меня есть ширина вкладки = 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.

Как мне может помочь Scene Builder в этой ситуации?

16
задан Community 14 November 2017 в 05:28
поделиться