首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javafx-2,将一个TableView连接到一个常规bean,即其字段不提供属性的bean。

javafx-2,将一个TableView连接到一个常规bean,即其字段不提供属性的bean。
EN

Stack Overflow用户
提问于 2012-07-09 09:34:52
回答 1查看 318关注 0票数 0

我的桌景:

代码语言:javascript
复制
TableView<Person> = new TableView<Person>();

但人就像:

代码语言:javascript
复制
class Person {

    String firstName;

    public getFirstName() {return firstName;}

}

也就是说,它没有新的javafx风格的属性。它是一个现有的类,由我使用的库实例化。

我用以下代码创建该列:

代码语言:javascript
复制
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本身不会触发事件,所以我需要一些老式的新事件,比如fireCellUpdate。这是一种方法吗?
EN

回答 1

Stack Overflow用户

发布于 2012-07-09 12:55:01

关于第一点,我认为你做不到。

关于第二点,我认为你也做不到。反正不是直接的。我认为最好的解决方案是使用JavaBeanStringProperty包装firstname属性,并在每次您想要对单元格进行修改时调用fireValueChangedEvent()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11392429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档