java - 将 SWT 列表绑定(bind)到 ArrayList

标签 java data-binding swt

我正在尝试将对象的 ArrayList 绑定(bind)到 Java SWT 列表小部件。这就是我所拥有的:

    DataBindingContext bindingContext = new DataBindingContext();
    //
    myModel= new WritableList(buses, MyObject.class); 
    IObservableList listWidgetObs = SWTObservables.observeItems(listWidget);
    bindingContext.bindList(listWidgetObs , myModel, null, null);
    //
    return bindingContext;

但不知何故,它似​​乎不起作用。我已经尝试了很长时间但仍然没有运气。这是我第一次尝试用 Java 进行数据绑定(bind)。如何将 ArrayList 绑定(bind)为 SWT List 小部件的数据提供者,然后将其绑定(bind)到 MyObject 类中方法调用 getName() 的值?

谢谢!

最佳答案

从您的示例来看,模型列表 (myModel) 似乎包含 MyObject 类型的对象。但这是错误的,因为 SWT List 的内容列表必须是字符串。

您(至少)有三个选择:

  • 列表中的对象必须是 String 类型,因此您必须在创建可观察列表时转换对象,或者
  • 您必须在 bindingList(...) 中提供 UpdateListStrategy,或者
  • 您将 ListViewerLabelProvider 绑定(bind)

选择取决于myModel的对象是否可以动态改变。

如果可能的话,我通常会选择第二个选项,因为我尽量不混合使用数据绑定(bind)和 JFace,除非确实非常需要。另一种选择有时会得到一些相当难看的通知/监听器链......

关于java - 将 SWT 列表绑定(bind)到 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6141839/

相关文章:

java - 字符串拆分和比较 - 最快的方法

java - 如果记录仅存在 13 个月,则检查数据库

java - 检测lambda是否是方法引用

android - BR 文件的数据绑定(bind)问题

c# - ComboBox : Use Usercontrol to display each item 中的数据绑定(bind)

java - 在 `syncExec` block 内部和外部使用变量的最简单方法(或者,如何在不初始化的情况下存储对对象的最终引用)

java - 顺利进行 ProgressBar 更新

c# - 保持数据网格与 mysql 数据库同步

java - 在ant中运行java项目

java - 对于 JAVA SWT 中禁用的控件,工具提示不可见