java - 从 TextField 动态更新 ListView (JavaFX)

标签 java string listview javafx

我正在尝试使用按钮上的简单事件处理程序将名称(字符串)应用到 JavaFX 内的 ListView 中,并接收来自 TextFields 的输入。所有字段似乎都有效且正确,只是没有更新到 ListView 中

    private ListView<String> manifestList;
    manifestList = new ListView<>();
    manifestList.setId("List");
    manifestList.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);

ListView添加方法:

   public void addtoList(String manifestlist){
    manifestList.getItems().add(manifestlist);
   }

For 循环生成用于输入的文本框(我已将其预设为 name1、name2 等来测试它)

    for( i = 0;i < editname.length;i++){
    editname[i] = new TextField("Name" + i);    
    }

用于将文本从文本字段添加到 ListView 的按钮处理程序(有 16 个文本框)

 Button add = new Button("add");

    add.setOnAction(new EventHandler<ActionEvent>(){
        @Override
        public void handle(ActionEvent event){

            for(i=0; i<16; i++){
            test.addtoList(editname[i].getText());
        }       
    }
});

test 是我调用 add 方法的类的变量名称, ListView 位于该类中。调用 add 方法的按钮位于不同的场景/类中。

我不太明白这里出了什么问题,我已将文本字段的值打印到控制台,并且它们打印得很好 - 但是它们没有更新到 ListView 中。

我尝试在 ListView 中使用带有预设字符串的 add 方法,并且添加得很好。

任何帮助/提示都会非常感谢。

最佳答案

创建一个全局ObservableList例如将其命名为 items :

//create an ObservableList
ObservableList<String> items = FXCollections.observableArrayList();
<小时/>

然后以每次更新 ObservableList 的方式使用它反射(reflect)回ListView<String> manifestList;

 manifestList.setItems(items); 
<小时/>

现在每次您想要将新项目添加到 ListView将其添加到 ObservableList 🌱 .所以你的方法可以修改为:

 public void addtoList(String manifestlist){ 
     items.add(manifestlist);
   }
<小时/>

看看下面的链接:

JAVAFX ListView chatting

以及 Oracle Bro 的教程:

http://docs.oracle.com/javafx/2/ui_controls/list-view.htm

关于java - 从 TextField 动态更新 ListView (JavaFX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41004084/

相关文章:

java - Thread.join 卡住进度条

java - 分离链接方法调用

javascript - 正则表达式是一项昂贵的操作吗?至少看起来

c++ - 从我的应用程序的 ListView 拖放到外部应用程序(例如 Windows 资源管理器)

java - 如何解压我在 Android 8.1 rom(基于 aosp)中找到的 system.new.dat.br 文件

java - ArrayList<>().contains(Object obj) 的行为

python - 不带空格且带特殊字符的字符串中的词频?

c++ - 为什么 Protocol Buffer 字节在 C++ 中是字符串?

java - 如何使用 ImageView 增加和减少值(数量)?

java - 如何在Android api 11+的Android ListView 中显示联系人