5

我使用 JavaFX Scene Builder 在 fxml 中放置了一个 ChoiceBox。

FXML 具有分配给它的控制器。

我的问题是:如果我想知道更改的值,我需要注册哪个事件?

onInputMethodTextChanged="#languageSelectionModified"

这不适用于以下代码

public void languageSelectionModified(Event event) {
    ChoiceBox<String> box = (ChoiceBox<String>) event.getSource();
    System.out.println(box.getValue());
}

这仅适用于初始点击(即打开列表,而不是选择项目时):

onMouseClicked="#languageSelectionModified"

尽管由于触摸或键盘是输入方法的情况,鼠标事件永远不会是一个好的选择,但它仍然证明可以访问 System.out。

我完全不知道这些东西记录在哪里(在默认的 Java-API 中它们不是)

4

2 回答 2

5

向控制器中的@FXML 注入选择框添加一个侦听器:

choicebox.getSelectionModel().selectedItemProperty().addListener(choiceboxSelectionChangeListener);

您还可以绑定到所选项目:

label.textProperty().bind(choicebox.getSelectionModel().selectedItemProperty());

这是在控制器中为 FXML 中定义的 ComboBox 连接侦听器的示例。ChoiceBox 的逻辑几乎相同。

于 2012-08-11T22:28:46.320 回答
0

您还可以使用 FXMLonAction属性:

<ChoiceBox onAction="#languageSelectionModified" />
于 2019-03-28T01:06:08.353 回答