【问题标题】:TableViewer not refreshing in RAPTableViewer 在 RAP 中不刷新
【发布时间】:2015-03-25 22:46:28
【问题描述】:

我尝试运行我的 Eclipse RCP 代码以在 Eclipse RAP 环境中运行。在我的 Eclipse RCP 代码中,有将行添加到表中的功能。但 添加代码在 Eclipse RAP 中不起作用。我正在使用 TableViewer。 以下是我的代码。

public class BasicEntryPoint extends AbstractEntryPoint {

    private static final int COLUMNS = 2;
    private TableViewer viewer;

    private class ViewContentProvider implements IStructuredContentProvider {
        public Object[] getElements(Object inputElement) {
            List<Person> list = (List<Person>) inputElement;
            return list.toArray();
        }

        public void dispose() {
        }

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

    private class ViewLabelProvider extends LabelProvider implements
            ITableLabelProvider {
        public Image getColumnImage(Object element, int columnIndex) {
            return null;
        }

        public String getColumnText(Object element, int columnIndex) {
            Person p = (Person) element;

            if (columnIndex == 0) {
                return p.getName();
            }

            return p.getPlace();
        }
    }

    private class Person{
        String name;
        String place;

        public void setName(String name) {
            this.name = name;
        }

        public void setPlace(String place) {
            this.place = place;
        }

        public String getName() {
            return name;
        }

        public String getPlace() {
            return place;
        }
    }

    public List<Person> persons() {

        List<Person> list = new ArrayList<Person>();

        Person person = new Person();
        person.setName("bb");
        person.setPlace("jjj");

        list.add(person);

        person = new Person();
        person.setName("sss");
        person.setPlace("fff");
        list.add(person);

        return list;

    }

    @Override
    protected void createContents(Composite parent) {
        parent.setLayout(new GridLayout(2, false));

        viewer = new TableViewer(parent, SWT.NONE);
        viewer.setContentProvider(new ViewContentProvider());
        viewer.setLabelProvider(new ViewLabelProvider());
        final Table table = viewer.getTable();
        viewer.setColumnProperties(initColumnProperties(table));
        viewer.setInput(persons());
        viewer.getTable().setHeaderVisible(true);

        Button checkbox = new Button(parent, SWT.CHECK);
        checkbox.setText("Hello");
        Button button = new Button(parent, SWT.PUSH);
        button.setText("World");
        button.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                System.out.println("Button clicked");
                Person p = new Person();
                p.setName("Dee");
                p.setPlace("TCR");
                persons().add(p);
                String prop[] ={"name","place"};
                viewer.update(p, prop);
                //viewer.refresh();
            }
        });
    }

    private String[] initColumnProperties(Table table) {
        String[] result = new String[COLUMNS];
        for (int i = 0; i < COLUMNS; i++) {
            TableColumn tableColumn = new TableColumn(table, SWT.NONE);
            result[i] = "Column" + i;
            tableColumn.setText(result[i]);
            if (i == 2) {
                tableColumn.setWidth(190);
            } else {
                tableColumn.setWidth(70);
            }
        }
        return result;
    }

}

【问题讨论】:

    标签: swt eclipse-rcp jface eclipse-rap


    【解决方案1】:

    你应该使用:

    viewer.add(p);
    

    而不是 update 将新项目添加到表中(对于 SWT 和 RAP)。

    您还必须更新模型以包含新项目。

    【讨论】:

    • 嗨@greg-449 非常感谢!!我对此确实有一个问题,通常我曾经添加到模型并刷新表格。但在这种情况下,我看不到模型在这里没有更新。
    • 嗨@greg-449 还有一个问题,propertychangelister 是否会在 Eclipse RAP 中支持?
    • 抱歉,我对 RAP 了解不多 - 最好问一个新问题。
    猜你喜欢
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多