`

[sample] tableview + property listens(databinding) + default labelprovide

 
阅读更多

[sample] tableview + property listens(databinding) + default labelprovide

public class TableViewer4 {

    public static void creatShellArae(Shell shell) {
        Table table = new Table(shell, SWT.BORDER | SWT.FULL_SELECTION);
        table.setHeaderVisible(true);
        for(int i=0; i < 3; i++) {
            TableColumn column = new TableColumn(table, SWT.NONE);
            column.setText("column " + i); column.setWidth(100);
        }

        TableViewer viewer = new TableViewer(table);
        viewer.setContentProvider(new MyContentProvider());

        DataModel input = new DataModel();
        input.add("data1");
        input.add("data2");
        
        viewer.setInput(input);
        
        input.add("data3");
        
    }

    public static void main(String[] args) {
        Display display = Display.getDefault();
        Shell shell = new Shell(display);
        shell.setSize(500, 300);
        shell.setLayout(new FillLayout());

        creatShellArae(shell);

        shell.open();
        shell.layout();

        while (!shell.isDisposed())
            if (!display.readAndDispatch())
                display.sleep();

    }

}

class MyContentProvider implements IStructuredContentProvider, PropertyChangeListener {
    private TableViewer viewer;

    public Object[] getElements(Object inputElement) {
        return ((DataModel) inputElement).elements();
    }

    public void dispose() {}

    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        this.viewer = (TableViewer) viewer;

        if (oldInput instanceof DataModel)
            ((DataModel) oldInput).removePropertyChangeListener(this);

        if (newInput instanceof DataModel) {
            ((DataModel) newInput).addPropertyChangeListener(this);
        }
    }

    public void propertyChange(PropertyChangeEvent event) {
        String eventPropertyName = event.getPropertyName();
        if (DataModel.ADD_ELEMENT.equals(eventPropertyName))
            viewer.add(event.getNewValue());
        if (DataModel.REMOVE_ELEMENT.equals(eventPropertyName))
            viewer.remove(event.getNewValue());
    }
}

 

分享到:
评论

相关推荐

    UIScrollerView+TableView+删除

    在这个项目中,“UIScrollerView+TableView+删除”就是这样一个实现方式,它允许用户在一个UIScrollerView中滑动查看多个UITableView,并且每个表格视图都具备添加和删除数据的功能。 首先,UIScrollerView是苹果...

    TableView+ScrollView的混合使用

    在iOS开发中,TableView和ScrollView是两种常用的UI组件,它们各自有着特定的使用场景。当需求涉及复杂的滚动交互时,可能会需要将TableView与ScrollView混合使用,以实现更丰富的用户界面和交互体验。本文将深入...

    ios-类似百度外卖首页---tableview内嵌套collectionview.zip

    在这个“ios-类似百度外卖首页---tableview内嵌套collectionview”的项目中,开发者通过代码抽离和分类的方式,实现了首页控制器的瘦身,提升了代码的可读性和可维护性。 首先,我们来详细解释这个标题所涉及的知识...

    iPhone development tableView sample

    本文将通过标题"iPhone development tableView sample"中的两个范例,详细讲解如何运用UITableView及其与NavigationController和SearchBar的结合。 一、UITableView基础用法 1. 初始化:首先,我们需要创建一个...

    悬停+ tableviewheader

    在iOS应用开发中,"悬停+ tableviewheader"是一个常见的设计模式,它结合了UITableView的头部视图(table view header)与悬停效果。这种设计通常用于展示一些重要的信息或者提供用户交互,如在滚动表格时保持某个...

    解析城市列表 TableView

    Plist(Property List)是苹果系统中的一个数据存储格式,常用来保存配置文件或者轻量级的数据。 首先,我们需要了解Plist文件。Plist文件是一种XML或二进制格式,可以存储字典、数组、字符串、数字等基本数据类型...

    iOS tableview里面嵌套tableview,自适应高度

    swift ,使用autolayout + storyboard 最外层tableview列表,cell里面嵌套了tableview,自适应内容,cell里的tableview不可滑动,内容全部显示,且文字分行显示,不用设置cell的高度直接可以自适应内容

    javafx 2.0 tableview 实例

    这个"javafx 2.0 tableview 实例"是一个很好的学习资源,它可以帮助开发者了解如何在JavaFX应用程序中有效地使用TableView。 首先,让我们详细了解一下JavaFX中的TableView组件。TableView是一个可定制的数据视图...

    iOS实现无限循环滚动的TableView实战教程

     2、使用TableView+3倍长度dataSource。可行性一般,在使用过程中滑动流畅,但是由于重复的数据源,可能导致在处理事件时需要特别对数据进行处理避免重复,另外此方法不能重用,总让有强迫症的人感觉不够优雅。。。...

    qml tableview 全选,单选

    在Qt Quick(QML)开发中,`TableView`是一个用于展示数据的组件,它支持多种视图模式,如列表、网格等。`TableView`通常与Model/View/Controller(MVC)架构一起使用,以便更好地管理和操作数据。在这个场景中,...

    QML TableView Demo演示示例

    Qt Quick Control1中 从5.1版本开始就提供了表格控件,但是感觉不怎么好用,在Qt Quick Control2中 5.12版本开始又提供了一个专门用于做表格的控件TableView,相比于前面的方案,使用Tableview更加简单和直接。...

    ios-轮播+tableview.zip

    在iOS开发中,创建一个具有轮播图和表格视图(TableView)的界面是一项常见的任务,尤其在构建新闻应用或信息展示平台时。这个“ios-轮播+tableview.zip”项目显然提供了一个实现此类功能的示例。下面将详细讨论...

    javafx 2.0 tableView 实例

    在JavaFX 2.0版本中,`TableView`是一个核心的组件,用于展示结构化的数据集,类似于传统的电子表格。下面我们将深入探讨`TableView`的使用方法,包括数据列的绑定。 `TableView`是JavaFX中的一个视图类,它允许...

    ScrollView+TableView滑动分层效果

    在iOS开发中,ScrollView和TableView是两种非常重要的视图组件,它们被广泛用于构建各种复杂的用户界面。"ScrollView+TableView滑动分层效果"是一种高级交互设计,常见于如美团等应用的主界面,它提供了丰富的用户...

    TableViewSection展开隐藏

    `TableViewSection展开隐藏`是UITableView高级用法的一个实例,它允许用户通过点击某个Section头部来展开或隐藏该Section下的所有行。这样的交互设计可以有效地组织和管理大量信息,提高用户体验。 首先,我们要...

    tableView分区圆角+单选+展开与收缩

    本教程将深入探讨如何实现“tableView分区圆角+单选+展开与收缩”的功能,这些特性能够为用户界面增添更多的交互性和美观性。 首先,让我们关注“tableView分区圆角”这一特性。在iOS中,我们通常使用Swift语言进行...

    UGUI 上的TableView

    在这个场景中,我们关注的是UGUI上的TableView,这是一个常见的UI元素,用于展示数据列表,通常用于游戏中的角色信息显示、商店商品列表或者设置选项等。 **TableView的实现原理** TableView在UGUI中通常由多个UI...

    JavaFX+Jfoenix 学习笔记(三)--TableView数据表格源码

    - 使用TableView的items属性将ObservableList绑定到TableView,例如:`tableView.setItems(dataList)`。 3. **JFoenix的Material Design风格**: - JFoenix库为JavaFX提供了一系列Material Design风格的组件,...

    ios-tableView的多项选择删除.zip

    当我们需要实现像邮件应用那样的多选删除功能时,就需要对tableView进行一些特殊的配置和操作。本项目"ios-tableView的多项选择删除.zip"显然是针对这个需求而设计的。下面将详细介绍如何在iOS中实现tableView的多项...

    Cocos Creator TableView.ts 翻译 Cocos2dx cc.TableView

    之前一直做Cocos2dx开发的TableView用得比较多,自己也扩展了一些功能,新公司用的Creator,所以翻译了个ts版本的,核心代码和函数名与cocos2dx的一致。 例子:...

Global site tag (gtag.js) - Google Analytics