首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jgoodies绑定+间接更改

jgoodies绑定+间接更改
EN

Stack Overflow用户
提问于 2009-04-14 21:36:14
回答 1查看 592关注 0票数 2

我的大脑抽筋了,试图理解在我的应用程序中使用JGoodies绑定的适当方法。

我有一个类文章,它是一个具有只读属性的bean。Article是一个“普通”bean,它不管理属性侦听器,因为属性永远不会改变。我有一个Swing JPanel,我想用它来显示文章的某些属性。可以在不同的时间查看不同的文章对象。

我正在寻找通过一个或多个对象执行以下操作的东西(X):

  1. X包含当前查看的文章。我可以调用X.setArticle()X.getArticle()更改为另一篇文章。没有其他方法来更改当前查看的文章,我必须遍历X,以便它知道我正在更改它。
  2. 在设置
  3. JPanel时,我希望使用X创建绑定到当前查看的文章(标题、作者等)的各种属性的只读JTextFields (
  4. (从#1和#2开始)),每当调用X.setArticle()时,文本字段的内容将自动更新。

我尝试使用BeanAdapter从包含在ValueHolder中的文章中提取属性模型,使用BasicComponentFactory.createTextField()来创建文本字段,除了我收到一个com.jgoodies.binding.beans.PropertyUnboundException抱怨文章类有未绑定属性外,这一切似乎都能工作。好了!我知道,我只是想不出怎样才能找到合适的“管道”来处理。每个Article都是不可修改的,但是当前查看的文章可能指向不同的文章。

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-04-14 22:34:24

我想通了。

我做了这样的事:

代码语言:javascript
复制
 // on setup:

 BeanAdapter<Article> adapter = new BeanAdapter<Article>((Article)null,
    false);
 // the "false" in the constructor means don't try to observe property
 // changes within the Article, but we still can observe changes
 // if the Article itself is replaced with a new one.

 JTextField tfAuthors = BasicComponentFactory.createTextField(
     adapter.getValueModel("authors"));
 JTextField tfTitle = BasicComponentFactory.createTextField(
     adapter.getValueModel("title"));

稍后,当我更改文章对象时,我只需这样做:

代码语言:javascript
复制
 public void showArticle(Article article)
 {
     adapter.setBean(article);
 }

屏幕上的一切都更新得很好。

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

https://stackoverflow.com/questions/749470

复制
相关文章

相似问题

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