繁体   English   中英

从TextField(JavaFX)动态更新ListView

[英]Dynamically Updating a ListView from a TextField (JavaFX)

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

    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);    
    }

按钮处理程序,用于将文本字段中的文本添加到列表视图中(有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方法的类的变量名,列表视图位于该类中。正在调用add方法的按钮位于另一个场景/类中。

我不太清楚这里出了什么问题,我已经将文本字段的值打印到控制台,并且它们可以正常打印-但是它们没有更新到ListView中。

我试过在列表视图中使用带有预置字符串的add方法,这样可以很好地进行添加。

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

将全局ObservableList命名为示例items

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

然后以某种方式使用它,使ObservableList每次更新都反映回ListView<String> manifestList;

 manifestList.setItems(items); 

现在,每次您要将新项目添加到ListView将其添加到ObservableList上。 因此,您可以将方法修改为:

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

看看下面的链接:

JAVAFX ListView聊天

以及Oracle Bro的教程:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM