Совет по компоновке SWT: кнопки с таблицей ниже - PullRequest
0 голосов
/ 11 февраля 2012

Я пытаюсь разработать пользовательский интерфейс SWT как новичок в программировании как на SWT, так и на пользовательском интерфейсе в целом. На основании фрагментов документации SWT я написал следующее:

    Display.setAppName("App Name");

    Display display = new Display();

    Shell shell = new Shell(display);
    shell.setLayout(new GridLayout());

    Group group = new Group(shell, SWT.DEFAULT);
    group.setLayout(new GridLayout());

    for (int i = 0; i < 3; i++)
        new Button(group, SWT.PUSH).setText("ABC" + i);

    new Label(group, SWT.SEPARATOR | SWT.VERTICAL);

    for (int i = 0; i < 3; i++)
        new Button(group, SWT.PUSH).setText("ABC" + i);

    new Label(group, SWT.SEPARATOR | SWT.HORIZONTAL);

    Table table = new Table(group, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
    table.setLinesVisible(true);
    table.setHeaderVisible(true);
    GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
    table.setLayoutData(data);

    for (String title : new String[] { "A", "B", "C", "D", "E", "F", "G" })
        new TableColumn(table, SWT.NONE).setText(title);

    for (int i = 0; i < 128; i++) {
        TableItem item = new TableItem (table, SWT.NONE);
        item.setText(0, "123");
        item.setText(1, "234");
        item.setText(2, "345");
        item.setText(3, "456");
        item.setText(4, "567");
        item.setText(5, "678");
        item.setText(6, "789");
    }

    for (TableColumn column : table.getColumns())
        column.pack();

    shell.pack();
    shell.open();

    while (shell.isDisposed() != true)
        if (display.readAndDispatch() != true)
            display.sleep();

    display.dispose();
}

В результате получается что-то вроде:

ABC1
ABC2
ABC3
|
ABC1
ABC2
ABC3
---
Table

Если я изменю макет в группе на RowLayout (), но не изменю GridData () таблицы на RowData (), я получу исключение приведения класса. Если я изменю его на RowData (), я получу что-то похожее на:

ABC1 ABC2 ABC3 | ABC1 ABC2 ABC3 ---- Table

Я хочу вот что:

ABC1 ABC2 ABC3 | ABC1 ABC2 ABC3
-------------------------------
             Table

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2012

Установите макет оболочки на gridLayout с шириной 2. Затем, когда вы создадите таблицу, установите горизонтальный интервал gridData на 2

В основном из памяти, не проверено

Shell myshell = new Shell(display, SWT.NONE);
GridLayout twoColumn = new GridLayout();
twoColumn.numColumns = 2;
myshell.setLayout(gl);

Group g1 = new Group(myshell, SWT.DEFAULT);
Group g2 = new Group(myshell, SWT.DEFAULT);

GridData twospan = new GridData(SWT.FILL, SWT.FILL,true,true);
twospan.horizontalSpan = 2;

Table t1 = new Table(myshell, SWT.DEFAULT);
t1.setLayoutData(twospan);

Это должно настроить ваш GridLayout на наличие двух столбцов, так что вы добавляете g1, и он идет вверху слева, g1 и идет вверху справа. Затем вы указываете, что t1 будет занимать два столбца, поэтому, когда вы добавляете его, он занимает всю вторую строку. На данный момент он также игнорирует вашу метку разделителя.

0 голосов
/ 11 февраля 2012

Я ужасный менеджер раскладок, поэтому использую WindowBuilder Pro, функцию затмения.Вы просто перетаскиваете все, что хотите, затем склеиваете все вместе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...