`
louisling
  • 浏览: 143862 次
  • 性别: Icon_minigender_1
  • 来自: ZhuHai
社区版块
存档分类
最新评论

SWT组件Table 的排序

    博客分类:
  • RCP
阅读更多
/**
 * This util calss provides some general RCP methods
 * 
 * @author Louis
 */
public class RcpUtils {
    /**
     * Add sorter to the specified column, compares using Collator
     */
    public static void addSorter(final Table table, final TableColumn column) {
        column.addListener(SWT.Selection, new Listener() {
            boolean isAscend = true;
            Collator comparator = Collator.getInstance(Locale.getDefault());

            public void handleEvent(Event e) {
                int columnIndex = getColumnIndex(table, column);
                TableItem[] items = table.getItems();

                for (int i = 1; i < items.length; i++) {
                    String value2 = items[i].getText(columnIndex);
                    for (int j = 0; j < i; j++) {
                        String value1 = items[j].getText(columnIndex);
                        boolean isLessThan = comparator.compare(value2, value1) < 0;
                        if ((isAscend && isLessThan) || (!isAscend && !isLessThan)) {
                            String[] values = getTableItemText(table, items[i]);
                            Object obj = items[i].getData();
                            items[i].dispose();

                            TableItem item = new TableItem(table, SWT.NONE, j);
                            item.setText(values);
                            item.setData(obj);
                            items = table.getItems();
                            break;
                        }
                    }
                }

                table.setSortColumn(column);
                table.setSortDirection((isAscend ? SWT.UP : SWT.DOWN));
                isAscend = !isAscend;
            }
        });
    }

    public static int getColumnIndex(Table table, TableColumn column) {
        TableColumn[] columns = table.getColumns();
        for (int i = 0; i < columns.length; i++) {
            if (columns[i].equals(column))
                return i;
        }
        return -1;
    }

    public static String[] getTableItemText(Table table, TableItem item) {
        int count = table.getColumnCount();
        String[] strs = new String[count];
        for (int i = 0; i < count; i++) {
            strs[i] = item.getText(i);
        }
        return strs;
    }
}

//默认使用字符串排序, 使用方法:
//RcpUtils.addSorter(table, column1);
//RcpUtils.addSorter(table, column2);
2
2
分享到:
评论
2 楼 muzibaishui2006 2012-08-09  
用的挺方便的,十分感谢!
1 楼 wxpuc123 2011-04-13  
谢了,正好用到。

相关推荐

    JAVA SWT Table SWTChart Jdbc 数据 表格 散点图 界面

    Table控件可以用来显示数据库中的表格数据,支持排序、筛选等功能;而Chart控件则可以渲染从数据库获取的散点数据。 6. **数据绑定** 要在Table和Chart之间同步数据,我们需要在Java代码中处理逻辑。当用户从...

    swt table 自己造个轮子

    在这个场景中,“swt table 自己造个轮子”指的是使用SWT(Standard Widget Toolkit)库来创建一个自定义的表格组件。SWT是Eclipse项目的一部分,它提供了一套原生的GUI组件,用于Java应用程序,提供了与操作系统更...

    swt table扩展

    本文将深入探讨SWT中的Table组件的扩展及其应用,同时参考了博客文章“swt table扩展”。 在SWT中,Table是一个非常重要的组件,用于展示多行多列的数据。它提供了类似电子表格的功能,包括排序、选择、编辑等。在...

    java swt table

    在SWT中,Table控件是一种用于显示列表数据的组件,它可以以列的形式展示数据,并支持排序、选择等功能。下面将详细介绍如何利用SWT的Layout布局机制来设计和优化Table组件的显示效果。 ### Layout布局机制 SWT...

    SWT中文教程.rar

    - **Control**: 所有SWT组件的基类,提供了基本的属性和方法。 - **Display**: 代表整个应用程序的显示区域,包含一个或多个Shell。 - **Label**: 用于显示文本或图像。 - **List**和**Tree**: 用于展示数据列表...

    SWT扩展

    SWT组件** SWT包含了一系列基本的UI组件,如按钮、文本框、列表、树、表等,这些组件都可以通过编程进行高度自定义。例如,`Composite`类可以用来创建自定义布局,而`Shell`类则代表应用程序的顶级窗口。开发者...

    多个SWT例子

    - Table:SWT 提供的 `Table` 类可以用来创建表格,支持多列、排序、选择等特性。JFace 的 `TableViewer` 可以进一步增强表格功能,如数据绑定和行操作。 - Tree:`Tree` 组件用于展示层次化的数据结构,`...

    SWT插件中文教程SWT常用方法

    7. **Table**:表格控件,可以展示多列数据,支持排序和选择。 8. **MenuItem** 和 **Menu**:菜单项和菜单,用于构建应用程序的菜单栏。 此外,SWT还提供了事件处理机制,如监听器接口,如ControlListener、...

    SWTUtils分页工具源码.zip

    SWT Table是SWT中用于显示表格数据的控件,它支持多列、排序、选择等功能。在分页场景下,用户可以在Table中浏览每一页的数据,并通过导航按钮进行翻页。 分页工具的核心通常包括以下几个部分: 1. **数据模型**:...

    Swt/Jface tableViewer入门教程一(显示tableViewer)

    在本文中,我们将深入探讨如何使用Swt/Jface库中的`tableViewer`组件来创建一个基本的表格视图。Swt(Standard Widget Toolkit)是Java中用于开发原生界面的应用程序开发工具包,而Jface是建立在Swt之上的抽象层,...

    Swt/Jface tableViewer入门教程三(加入在表格上直接编辑数据)

    首先,`TableViewer`是Swt/Jface提供的一个高级组件,它封装了Swt中的`Table`控件,增加了许多便捷的功能,如数据绑定、过滤、排序等。在“入门教程三”中,我们将关注如何实现在表格中直接编辑数据,这是提高用户...

    JAVA swt 开发第二部分

    3. SWT组件: - 控件(Widgets):包括Button、Text、Label等基本元素,它们是用户界面的基本构建块。 - 布局(Layouts):如FillLayout、GridLayout、 MigLayout等,用于控制控件在容器中的布局方式。 - 表格...

    java Swing、SWT分页

    SWT的`Table`支持复杂的排序和过滤功能,但实现分页需要自定义逻辑,比如使用`Composite`容器来模拟分页,或者利用事件监听来动态加载和隐藏数据。 在分页控件的设计中,通常会涉及到以下几个关键部分: 1. 数据源...

    基于Java SWT 的学生自助服务系统

    SWT的Table或Tree组件可以用来展示课程和成绩,提供筛选和排序功能。 5. **成绩展示**:展示学生的各科成绩,可能包括总分、平均分等统计信息。利用SWT的Label、ProgressBar或Chart组件,可以直观地展示这些数据。 ...

    SWT/Jface API 3.4

    7. **Table and Tree Widgets**:SWT 提供了 Table 和 Tree 控件,允许用户显示和操作数据。在 JFace 中,TableViewer 和 TreeViewer 扩展了这些功能,添加了数据绑定和自定义列渲染等功能。 8. **Layout Managers*...

    SWT --JAR 包

    - 表格(Table)和树(Tree):SWT提供了高度定制的表格和树视图,可以处理大量数据,并支持排序、分页和选择。 - 菜单(Menu)和工具栏(ToolBar):开发者可以轻松地创建上下文菜单、主菜单以及工具栏,以提供...

    swt/jface api帮助文档

    1. **SWT组件**:包括各种基本和复杂控件,如Button、Label、Text、Shell、Composite等。每个控件都有其特定的属性、方法和事件。 2. **事件和监听器**:SWT支持事件驱动编程,你可以为控件添加监听器来响应用户的...

    Java SWT API参考(chm)

    5. **表和树(Tables and Trees)**:Table和Tree控件允许展示和操作结构化数据,它们支持多列、排序、选择和自定义绘制等功能。 6. **图像处理(Image Handling)**:SWT提供了加载和显示图像的能力,包括位图...

    JAVA SWT学生信息管理系统

    SWT的Table控件支持多列,可以设置不同类型的列(文本、数字等),并允许用户进行排序、选择和编辑。通过监听Table的事件,可以实现对表格内数据的修改、删除等功能。例如,用户可以右键点击表格中的某一行,选择...

    SWT教程

    6. **表和树视图**: SWT的Table和Tree组件可以用来展示结构化数据,支持多选、排序和自定义列头。 7. **图像和颜色**:SWT提供了处理图像和颜色的方法,可以加载、显示和操作图像,以及设置控件的颜色和背景。 8....

Global site tag (gtag.js) - Google Analytics