我目前正在开发一个向导,它将指导我完成几个步骤。
在其中一个WizardPages上,我希望有一个动态填充的表,用户可以在其中选择一些行。
我为此使用CheckboxTableViewer。
目前,它运行良好(包括动态列数等)
结果如屏幕截图所示。java - CheckboxTableViewer第一列全选-LMLPHP

我的问题是,第一列跨越带有复选框的列。我想要以下行为:


第一列标题(屏幕快照中的“ nodeAlias”)应从列顶部开始,而不是复选框上方(因此需要向右移一点)
我想在执行“全选/取消全选”的复选框上方的标题中具有一个复选框


我在向导页面(extends WizardPage)中使用的代码如下所示:

public class ShowResults extends WizardPage {
    private Table table;

    public ShowResults() {
        super("wizardPage");
        setTitle("Title");
        setDescription("Description");
    }

    public void createControl(Composite parent) {
        Composite container = new Composite(parent, SWT.NULL);

        setControl(container);
        container.setLayout(new GridLayout(1, false));

        CheckboxTableViewer checkboxTableViewer = CheckboxTableViewer.newCheckList(container, SWT.BORDER | SWT.FULL_SELECTION);
        createColumns(checkboxTableViewer);
        table = checkboxTableViewer.getTable();
        table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
        table.setHeaderVisible(true);
        table.setLinesVisible(true);

        checkboxTableViewer.setContentProvider(ArrayContentProvider.getInstance());

        checkboxTableViewer.setInput(getData()); // returns a list of Record-Objects
    }


    private void createColumns(CheckboxTableViewer checkboxTableViewer) {
        // get the required columns as list and act for each
        for(String columnName : getColumnNames()){
            // create a column for the first name
            TableViewerColumn colFirstName = new TableViewerColumn(checkboxTableViewer, SWT.NONE);
            colFirstName.getColumn().setWidth(150);
            colFirstName.getColumn().setText(columnName);
            colFirstName.setLabelProvider(new ColumnLabelProvider() {
              @Override
              public String getText(Object element) {
                Record r = (Record) element;
                return r.getValue(columnName);
              }
            });
        }

    }


我还没有包括Record的类定义,因为无论如何信息的显示仍然有效。 (我想这对这个问题并不重要)。

最佳答案

为什么不看看星云网格小部件?您可以为列标题编写自己的CellRenderer。见here

关于java - CheckboxTableViewer第一列全选,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31944765/

10-10 09:09