CheckboxTableViewer不会显示复选框的标签

时间:2018-02-07 12:57:10

标签: java checkbox jface tableviewer

在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);

    }

1 个答案:

答案 0 :(得分:1)

由您在表格上设置的标签提供程序来提供表格的文本。您设置的标签提供商只返回null文本(以及其他所有内容),因此您无法获得任何内容。

由于您只是在表中设置字符串,因此您只需使用标准标签提供程序:

checkboxTableViewer.setLabelProvider(new LabelProvider());