Javafx 组合框重置问题

标签 java user-interface combobox javafx javafx-2

当我尝试使用以下代码清除组合框时:

代码:

public class ComboController implements Initializable
{

@FXML
ComboBox firstcombobox=new ComboBox();
@FXML
ComboBox secondcombobox=new ComboBox();
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
    // TODO Auto-generated method stub
    firstcombobox.getItems().add("firabc");
    firstcombobox.getItems().add("firbcd");

    secondcombobox.getItems().add("seccde");
    secondcombobox.getItems().add("secdef");
}
@FXML
public void firstcomboboxAction()
{
    secondcombobox.getSelectionModel().clearSelection();
    secondcombobox.getItems().clear();
    System.out.println(firstcombobox.getSelectionModel().getSelectedItem());
}

public void secondcomboboxAction()
{
    System.out.println(secondcombobox.getSelectionModel().getSelectedItem());
    System.out.println("my name is vinay");
}

}

自动调用 Action 事件

首先我从第二个组合框中选择了“seccde” 然后我从第一个组合框中选择了“firabc”

我收到的输出是:

seccde
my name is vinay
null
my name is vinay
firabc

但它应该是:

seccde
my name is vinay

firabc  [with an empty firstcombobox]

Fxml:

<AnchorPane xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="application.ComboController">
<ComboBox fx:id="firstcombobox" onAction="#firstcomboboxAction"  >
<ComboBox fx:id="secondcombobox" onAction="#secondcomboboxAction" >

最佳答案

输出正是您所期望的。

首先,您在第二个组合框中选择一些内容。这将调用第二个组合框的处理程序,给出输出

seccde
my name is vinay

然后您在第一个组合框中选择一个项目。这将调用第一个组合框的处理程序。该组合框的处理程序首先清除第二个组合框的所有项目,作为副作用将第二个组合框的 value 属性设置为 null。这会导致调用第二个组合框的操作处理程序,生成输出

null
my name is vinay

然后第二个组合框的处理程序生成输出

firabc

当然,此时第二个组合框将没有任何项目。

这完全符合 ComboBox 的 Javadocs。特别是 docs for the onAction handler描述处理程序如下:

The ComboBox action, which is invoked whenever the ComboBox value property is changed. This may be due to the value property being programmatically changed, when the user selects an item in a popup list or dialog, or, in the case of editable ComboBoxes, it may be when the user provides their own input (be that via a TextField or some other input mechanism.

关于Javafx 组合框重置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22216259/

相关文章:

java - Mongodb保存对象列表

java - 具有弱引用和身份哈希的并发集

java - 如何复制 java.util.Properties 对象?

JavaFx:组合框表格单元格双击

Wpf 组合框可选默认项

java - 如何控制 javax.xml.transform.Transformer 创建的行结尾?

user-interface - 如何在黑莓中为屏幕创建固定背景?

android - 旧 sdk 上的 Material 设计

javascript - 没有浏览器的javascript中的GUI应用程序?

javascript - 如何使用 jQuery 将选定值设置为多个 Select 输入?