Выполнить действие, когда элемент комбинированного списка выбран FXML

Я пытаюсь создать выпадающее меню (используя ComboBox) с контроллерами FXML и JavaFX.

Это то, что у меня уже есть:

<ComboBox fx:id="menuSettings" layoutX="14.0" layoutY="27.0" prefHeight="27.0" prefWidth="27.0" style="-fx-background-color: white;">               
    <items>
        <FXCollections fx:factory="observableArrayList">
            <String fx:value="Menu" />
            <String fx:value="Settings" />
            <String fx:value="Exit" />
        </FXCollections>
    </items>
</ComboBox>

Как я могу показать новую сцену, используя слушателей Action, когда выбран параметр ComboBox?

Заранее спасибо!

1 ответ

Есть два пути, которые приходят на ум, как вы могли бы сделать это.

Первым было бы добавить onAction="#yourMethod" на ваш <ComboBox ... > тег. Затем вы можете добавить код в свой контроллер...

@FXML public void yourMethod() {
    //Show the scene here
}

... который будет запущен, когда пользователь выберет элемент.

Другая вещь, которую вы могли бы сделать, это добавить ChangeListener на ваш ComboBox:

@FXML public void initialize() {
    yourComboBox.valueProperty().addListener(new ChangeListener<String>() {
            @Override public void changed(ObservableValue value, String old, String new) {
                //Show your scene here
            }    
        });
}

Обе эти работы, я думаю, просто предпочтительнее делать в коде или на языке FXML.

Я надеюсь, что это было полезно, и удачи в вашем проекте!

(Если это не ответило на ваш вопрос, пожалуйста, дайте мне знать, и я сделаю все возможное, чтобы пересмотреть мой ответ)

Другие вопросы по тегам