CheckboxTableViewer 不会显示复选框的标签

CheckboxTableViewer won't show the label of checkboxes

在 Java 中,我使用 CheckboxTableViewer 为用户显示清单。我正在使用 setInput 方法填充清单,如下所示。但是出于某种原因,当我 运行 我的代码驻留在向导页面中时,它显示复选框而不是框的标签(根本没有文本,就好像我传递的是空字符串一样)。我该如何解决这个问题?谢谢你。下面是我的代码

public void createControl(Composite arg0) {

        Composite container = new Composite(arg0, SWT.NONE);
        container.setLayout(new GridLayout());

        GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
        container.setLayoutData(layoutData);

        checkboxTableViewer = CheckboxTableViewer.newCheckList(container,
                SWT.FULL_SELECTION | SWT.BORDER);
        checkboxTableViewer.getTable().setLinesVisible(true);
        checkboxTableViewer.getTable().setSize(500, 500);
        checkboxTableViewer.setContentProvider(new ArrayContentProvider());
        checkboxTableViewer.setLabelProvider(new ITableLabelProvider() {

            public void removeListener(ILabelProviderListener listener) {
                // TODO Auto-generated method stub

            }

            public Image getColumnImage(Object element, int columnIndex) {
                // TODO Auto-generated method stub
                return null;
            }

            public String getColumnText(Object element, int columnIndex) {
                // TODO Auto-generated method stub
                return null;
            }

            public void addListener(ILabelProviderListener listener) {
                // TODO Auto-generated method stub

            }

            public void dispose() {
                // TODO Auto-generated method stub

            }

            public boolean isLabelProperty(Object element, String property) {
                // TODO Auto-generated method stub
                return false;
            }
        });

        checkboxTableViewer.setInput(new String[]{"zaid","saad","ahmad"});

        checkboxTableViewer.addCheckStateListener(new ICheckStateListener() {

            public void checkStateChanged(CheckStateChangedEvent event) {
                if (checkboxTableViewer.getCheckedElements().length > 0) {
                    enableNext = true;
                } else {
                    enableNext = false;
                }
                checkStatus();

            }

            private void checkStatus() {
                canFlipToNextPage();
                // explicit call
                getWizard().getContainer().updateButtons();

            }
        });

        setControl(container);

    }

由您在 table 上设置的标签提供者为 table 提供文本。您为文本(以及其他所有内容)设置的标签提供者只是 returns null,所以您什么也得不到。

由于您只是在 table 中设置字符串,您可以只使用标准标签提供程序:

checkboxTableViewer.setLabelProvider(new LabelProvider());