首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TableViewer.refresh不工作

TableViewer.refresh不工作
EN

Stack Overflow用户
提问于 2014-12-12 20:17:48
回答 1查看 441关注 0票数 0

我添加到表查看器中的两个事件没有出现在屏幕上。

下面是我创建表查看器、表和一列的代码

代码语言:javascript
复制
    TableViewer tableViewer = new TableViewer(composite, SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION);
    table = tableViewer.getTable();
    table.setHeaderVisible(true);
    table.setLinesVisible(true);
    fd_btnNewButton.left = new FormAttachment(table, 6);
    FormData fd_table = new FormData();
    fd_table.top = new FormAttachment(eventLabel, 6);
    fd_table.left = new FormAttachment(0, 10);
    fd_table.right = new FormAttachment(100, -100);
    fd_table.bottom = new FormAttachment(eventLabel, 387, SWT.BOTTOM);
    table.setLayoutData(fd_table);
    TableColumn tableColumn = new TableColumn(table,SWT.LEFT);
    String[] column_names = new String[]{"Events"};
    tableColumn.setText(column_names[0]);
    tableViewer.setColumnProperties(column_names);
    tableViewer.setLabelProvider(new ContinuousIntegrationLabelProvider());
    tableViewer.setContentProvider(new ContinuousIntegrationContentProvider());

该表正在成功创建。接下来,我将设置输入,然后刷新表.

代码语言:javascript
复制
    events.add("Build"); //events is an ArrayList<String>
    events.add("JUnit Tests");
    tableViewer.setInput(events);
    tableViewer.refresh();

下面是我的提供者方法:

代码语言:javascript
复制
/**
 * label provider for the table
 */ 
public class ContinuousIntegrationLabelProvider extends LabelProvider implements ITableLabelProvider {

    /**
     * image for the column
     */
    public Image getColumnImage(Object element, int index){
        switch(index){
            case 0:
                if(model.getJenkinsJob() == null){
                    return Images.getImage(Images.WARNING);
                }
                else{
                    return null;
                }
            default:
                return null;
        }
    }

    /**
     * returns the correct value for each column
     */
    public String getColumnText(Object element, int index){
        switch(index){
            case 0:
                return (String) element;
            default:
                return "";
        }
    }

这是我的内容提供商:

代码语言:javascript
复制
/**
 * content provider for the table
 */
public class ContinuousIntegrationContentProvider implements IStructuredContentProvider {

    @SuppressWarnings("unchecked")
    public Object[] getElements(Object inputElement) {
        ArrayList<String> data = (ArrayList<String>) inputElement;
        return data.toArray();
    }

    public void dispose() {
    }

    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-15 18:23:06

我只需要在表列上设置宽度,然后所有的东西都会出现。

下面是我更改的代码的部分:

代码语言:javascript
复制
    TableColumn tableColumn = new TableColumn(table, SWT.LEFT);
    String[] column_names = new String[]{"Events"};
    tableColumn.setText(column_names[0]);
    tableColumn.setWidth(352);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27451478

复制
相关文章

相似问题

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