2

JavaFX-メソッド(およびその他の機能)を持つクラスRecordがありpublic String getName()ます。私は持っています、そしてここにの名前ListView<Record> listviewを表示するためのコードがあります:Record

listview.setCellFactory(new Callback<ListView<Record>, ListCell<Record>>() {
    public ListCell<Record> call(ListView<Record> param) {
        final ListCell<Record> cell = new ListCell<Record>() {
            @Override
            public void updateItem(Record item, boolean empty) {
                super.updateItem(item, empty);
                if (item != null) {
                    setText(item.getName());
                }
            }
        };
        return cell;
    }
});

残念ながら、Recordの名前を次のように変更すると、次のようになります。

Record record = listview.getSelectionModel().getSelectedItem();
record.setName("New Name");

リストビューではセルテキストは変更されません。これを修正するにはどうすればよいですか?または、セルのテキストを別の方法で変更するにはどうすればよいですか?

4

1 に答える 1

2

これを行うための最良の(またはほとんどのJavaFX風の)方法は、Recordクラスの名前をプロパティとして公開し、ListCellのtextPropertyをそれにバインドすることです。nameProperty()レコードにのインスタンスを返すメソッドがあると仮定するとStringPropery、行を置き換えることができます

setText(item.getName());

textProperty().bind(item.nameProperty());
于 2013-03-23T23:30:58.053 に答える