首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TableViewer居中布局

TableViewer居中布局
EN

Stack Overflow用户
提问于 2012-08-28 02:11:46
回答 1查看 835关注 0票数 0

现在我已经成功地在我的TitleAreaDialog中添加了一个TableViewer

我正在尝试解决我遇到的一些布局问题。

我可以在对话框窗口中控制tableViewer的布局和位置吗?

现在,表格显示在右侧。

我希望它在我的父级复合图中居中。

我可以在createDialogArea方法中将TableViewer添加到父布局吗?我将添加更多的组合到对话框中,并希望能够控制它们的去向和外观。另外,我的表在表的末尾显示了一个半空的列,有什么方法可以删除它吗?

类似于:

代码语言:javascript
复制
GridData gridData = new GridData();
gridData.grabExcessHorizontalSpace = true;
gridData.horizontalAlignment = GridData.CENTER;
TableViewer d = createTableViewer(area);
d.setLayoutData(gridData);

这是我的createDialogArea代码。

代码语言:javascript
复制
protected Control createDialogArea(Composite parent) {
   final Composite area = new Composite(parent, SWT.NULL);
   final GridLayout gridLayout = new GridLayout();
   gridLayout.marginWidth = 15;
   gridLayout.marginHeight = 10;
   area.setLayout(gridLayout);

   TableViewer d = createTableViewer(area);

   return area;
}

下面是我的表查看器代码

代码语言:javascript
复制
 private TableViewer createTableViewer(Composite parent) {
    viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
    createColumns(parent, viewer);
    final Table table = viewer.getTable();
    table.setHeaderVisible(true);
    table.setLinesVisible(true);

    viewer.setContentProvider(new ArrayContentProvider());
    viewer.setInput(AplotSelectedDataTable.getInstance().getArrayData());

    // Layout the viewer
    GridData gridData = new GridData(SWT.CENTER);
    gridData.verticalAlignment = GridData.FILL;
    gridData.horizontalSpan = 2;
    gridData.grabExcessHorizontalSpace = true;
    gridData.grabExcessVerticalSpace = true;
    gridData.horizontalAlignment = GridData.FILL;
    viewer.getControl().setLayoutData(gridData);
  return viewer;
 }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-30 03:53:02

这里有一个小例子,可以帮助你解决布局问题:

代码语言:javascript
复制
public class TestClass extends Dialog {

    private TableViewer viewer;

    protected TestClass(Shell parentShell) {
        super(parentShell);
    }

    protected Control createDialogArea(Composite parent) {
        final Composite area = new Composite(parent, SWT.NONE);
        final GridLayout gridLayout = new GridLayout(2, true);
        gridLayout.marginWidth = 15;
        gridLayout.marginHeight = 10;
        area.setLayout(gridLayout);

        area.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

        createButtons(area);
        createTableViewer(area);

        return area;
    }

    private void createButtons(Composite parent)
    {
        Button button1 = new Button(parent, SWT.PUSH);
        button1.setText("Button1");
        button1.setLayoutData(new GridData(SWT.CENTER, SWT.FILL, true, true));

        Button button2 = new Button(parent, SWT.PUSH);
        button2.setText("Button2");
        button2.setLayoutData(new GridData(SWT.CENTER, SWT.FILL, true, true));
    }

    private void createTableViewer(Composite parent) {
        viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
                | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
        createColumns(parent);
        final Table table = viewer.getTable();
        table.setHeaderVisible(true);
        table.setLinesVisible(true);

        viewer.setContentProvider(new ArrayContentProvider());

        // Layout the viewer
        GridData gridData = new GridData(SWT.CENTER, SWT.FILL, true, true);
        gridData.horizontalSpan = 2;
        table.setLayoutData(gridData);
    }

    private void createColumns(Composite parent)
    {
        TableViewerColumn viewerColumn = new TableViewerColumn(viewer, SWT.NONE);
        final TableColumn column = viewerColumn.getColumn();
        column.setText("Title");
        column.setWidth(100);
        column.setResizable(true);
        column.setMoveable(false);
    }

    public static void main(String[] args) {
        Display display = Display.getDefault();
        final Shell shell = new Shell(display);

        TestClass test = new TestClass(shell);

        test.open();

        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }
}

它基本上创建了一个小的Dialog,上面有两个按钮,下面有一个以为中心的 TableViewer。这应该会给你一个关于如何解决问题的想法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12147233

复制
相关文章

相似问题

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