javafx-2,将TableView连接到常规bean,这是一个bean,其字段不提供Property

时间:2012-07-09 09:34:52

标签: tableview javafx-2

我的表格视图:

TableView<Person> = new TableView<Person>();

但人是这样的:

class Person {

    String firstName;

    public getFirstName() {return firstName;}

}

它没有新的javafx样式属性。它是一个现有的类,由我使用的库实例化。

我使用以下代码创建列:

TableColumn columnFirstName = new TableColumn("First Name");

columnCodfis.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Person,   String>,ObservableValue<String>>(){
        @Override
        public ObservableValue<String> call(CellDataFeatures<Person, String> arg) {
            if (arg.getValue()==null) return null;
            return new ReadOnlyStringWrapper(arg.getValue().firstName);
        }
    });

这很麻烦,但很有效。
我的问题是:

  1. 返回ObservableValue毫无意义,因为bean无法触发更改事件。因此,我想避免所有的ObservableValue开销,怎么做呢?
  2. 因为javabean本身不会触发事件,所以我需要一些老式的resfresh事件,比如fireCellUpdate。这是一种方法吗?

1 个答案:

答案 0 :(得分:2)

第一点,我认为你不能。

对于第二点,我认为你也不能。反正不是直接的。 我认为最好的解决方案是使用JavaBeanStringProperty来包装firstname属性,并在每次要更新单元格时调用fireValueChangedEvent()