将组合框中的选定项目设置为文本字段

安娜

我想根据组合框中的选定项目设置 TextField 的文本

太阳火焰

据我了解您的问题,您想TextField根据ComboBox. 可能您只是像评论中提到的那样使用:personnelcongetxt.setText(String.valueOf(personneList.getValue()));每次选择不同的项目时,它都不会更新您的值。它始终为空,因为默认选择(如果您未设置)为空,因此它在Textfield. 如果要更新,有两种方法:

  1. 使用绑定。
  2. 使用监听器。

这是代码:

public class Controller implements Initializable {

    @FXML
    private ComboBox<Model> cb;
    @FXML
    private TextField tf;

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        initCB();
        // Solution one : using bindings :
        tf.textProperty().bind(Bindings.when(cb.getSelectionModel().selectedItemProperty().isNull())
                .then("")
                .otherwise(cb.getSelectionModel().selectedItemProperty().asString())); // uses toString of the Model

        // Solution two using listener :
//      cb.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
//          tf.setText(newValue.toString()); // or newValue.getName();
//      });
    }

    private void initCB() {
        cb.setItems(FXCollections
                .observableArrayList(new Model("Apple"), new Model("Banana"), new Model("")));
    }

    private class Model {
        private String name;

        public Model(String name) {
            this.name = name;
        }

        public String getName() {
            return name;
        }

        @Override
        public String toString() {
            return name;
        }
    }

}

根据您的选择,结果可能略有不同。

  • 如果您使用的是第一个解决方案(绑定),那么您将无法通过键入文本字段的文本来“手动”更改,但您可以确保TextField每次选择组合框的项目时都会显示。

  • 如果您使用的是第二种解决方案(侦听器),则在您选择新项目后 textField 的值会更新,但之后它允许您随时编辑文本字段,并且您可以将文本更改为任何字符串。所以如果你想要这个功能,那么你应该走这条路。

长话短说:绑定始终显示所选项目,侦听器仅在选择新项目后显示。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将提示设置为文本字段中的文本开头

ms access-将光标在文本字段中的位置设置为仅在文本框为空时开始

将焦点设置为文本字段

将文本字段设置为必填

将项目设置为JAVA中的组合框

从组合框中的选定项目填充文本框

用户清除WPF中的文本字段时,文本框未将值设置为null

可见的设置问题-布局为带有文本字段和组合框的SAP UI5表中的列之一

Webix组合框中的不可编辑文本字段

尝试将标签文本设置为文本字段输入

如何在单击按钮时获取文本字段的选定文本?pickerview设置为文本字段的输入视图。迅速

如何将“select”下拉列表中的文本值设置为“input”文本字段?

根据另一个类的组合框中的所选项目启用标签和文本字段

如何从主页文本字段将值设置为第二页文本字段

无法将变量设置为文本字段的值

Codenameone:无法将浮动提示设置为文本字段

如何将验证文本字段设置为包?

如何将 onClicked 按钮值设置为 reactjs(计算器)中的文本字段?

将addEventListener设置为数组中的元素不会在文本字段中设置预期值-Javascript

显示文本字段中的文本,但在组合框中选择时不会更改字体

如何从文本字段向组合框添加文本?

如何从组合框中获取选定的项目

如何在 Thymeleaf 中显示从“选择”到“文本字段”的选定项目?

SwiftUI 文本字段 - 如何在编辑模式下将文本字段的背景颜色设置为清除

使用Python将字符串粘贴到Gnome中的选定文本字段中

将文本绑定到组合框中的所选项目

使用数组中的两个文本字段填充组合框

Access - 从组合框中过滤连续表单文本字段

从组合框向文本字段添加值