属性更改时ListView不会更新

时间:2015-05-18 09:57:03

标签: javafx

我正在尝试使用由命令组成的observableArrayList创建一个ListView。 Command类看起来像这样

public class Command {

private StringProperty commandName = new SimpleStringProperty(this, "commandName", "");

public Command(String name) { 
    setCommandName(name);
}

public void setCommandName(String name) {
    this.commandName.set(name);
}

public String getCommandName() {
    return commandName.get();
}

public StringProperty commandName() {
    return commandName;
}

public String toString() {
    return getCommandName();
}

}

我按以下方式使用命令:

Command cmd1 = new Command("Move Forward");
Command cmd2 = new Command("Turn Left");
Command cmd3 = new Command("Turn Right");

ObservableList<Command> lst = FXCollections.observableArrayList();
lst.add(cmd1);
lst.add(cmd2);
lst.add(cmd3);

ListView<Command> lv = new ListView<Command>();
lv.setItems(lst);

TextField tf = new TextField();
tf.textProperty().addListener((a,b,c) -> { cmd2.setCommandName(c); });

BorderPane bp = new BorderPane();
bp.setCenter(lv);
bp.setBottom(tf);

Scene scene = new Scene(bp,400,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();

我希望每当文本字段更改都会在列表视图中反映时更新cmd2。但我显然误解了一些事情。任何人都可以提示吗?

0 个答案:

没有答案