我正在尝试使用由命令组成的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
。但我显然误解了一些事情。任何人都可以提示吗?