Java EclipseRCP表动态更新

Java EclipseRCP表动态更新,java,eclipse,rcp,Java,Eclipse,Rcp,我想在视图部件中创建一个表,该表将动态更新(行数、列数、列名)。模型是字符串数组的集合。我可以这样做吗?最简单的方法是使用TableViewer实例,指定其内容提供者,然后每次更改其内容时都可以调用其refresh()方法。@itun。动态显示列的最简单方法是创建所有列,并将不需要的列的宽度设置为零。 下面是创建动态列的另一种方法(我正在使用) 为列(列名、方向、数据提供程序)创建扩展点 使用步骤1创建的扩展 在视图中创建列的实现 String[] id = preferences.ge

我想在视图部件中创建一个表,该表将动态更新(行数、列数、列名)。模型是字符串数组的集合。我可以这样做吗?

最简单的方法是使用TableViewer实例,指定其内容提供者,然后每次更改其内容时都可以调用其refresh()方法。

@itun。动态显示列的最简单方法是创建所有列,并将不需要的列的宽度设置为零。 下面是创建动态列的另一种方法(我正在使用)

  • 为列(列名、方向、数据提供程序)创建扩展点
  • 使用步骤1创建的扩展
  • 在视图中创建列的实现

        String[] id = preferences.getString(PREFS_COLUMNS).split(";");
        for (int i = 0; i < id.length; i++) {
            String name = "";
            int style = SWT.LEFT;
            Image image = null;
            ILabelProvider provider = registry.createLabelProvider(id[i]);
            if (provider != null) {
                name = registry.getName(id[i]);
                style = registry.getOrientation(id[i]);
                if (provider instanceof ITableLabelProvider) {
                    name = ((ITableLabelProvider) provider).getColumnText(null, i);
                    image = ((ITableLabelProvider) provider).getColumnImage(null, i);
                }
            } else {
                LogFactory.getLog(getClass()).warn("Missing column [" + id[i] + "]");
            }
            if (index < table.getColumnCount()) {
                tableColumn = table.getColumn(index);
                if (tableColumn.getData("labelProvider") != null)
                    ((ILabelProvider) tableColumn.getData("labelProvider")).dispose();
            } else {
                tableColumn = new TableColumn(table, style);
                tableColumn.addControlListener(columnControlListener);
                tableColumn.addSelectionListener(columnSelectionListener);
                tableColumn.addDisposeListener(new DisposeListener() {
                    public void widgetDisposed(DisposeEvent e) {
                        if (e.widget.getData("labelProvider") != null)
                            ((ILabelProvider) e.widget.getData("labelProvider")).dispose();
                    }
                });
            }
            tableColumn.setText(name);
            tableColumn.setAlignment(style);
            tableColumn.setImage(image);
            tableColumn.setMoveable(true);
            tableColumn.setData("labelProvider", provider);
            tableColumn.setData("columnId", id[i]);
            index++;
        }
    
    String[]id=preferences.getString(PREFS_列).split(“;”);
    for(int i=0;i

  • 你能给我一段代码吗?因为很难找到有用的东西。我读过关于TableViewer的文章。你仍然可以用一个简单的例子来解释我的任务。先看一下这个教程:我看到了这个,但它没有解释一件事。如何更改列名和列号?如果要更改列名,只需从TableViewerColumn实例检索列并调用setName()。如果要添加列,请创建新的TableViewerColumn实例。就这样