SWT Java - рисование с помощью GridData и GridLayout

1

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

Я попытался использовать эту ссылку http://www.eclipse.org/articles/Article-Understanding-Layouts/Understanding-Layouts.htm, но без успеха.

Может ли кто-нибудь направить меня?

спасибо

Изображение 174551

Теги:
swt

1 ответ

2
Лучший ответ

Это должно быть хорошей отправной точкой для вас:

public static void main(String args[])
{
    Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("StackOverflow");
    shell.setLayout(new GridLayout(2, false));

    Composite radioLeft = new Composite(shell, SWT.BORDER);
    radioLeft.setLayout(new GridLayout(6, false));
    radioLeft.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

    for (int i = 0; i < 12; i++)
    {
        Button button = new Button(radioLeft, SWT.RADIO);
        button.setText("Radio " + i);
        button.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    }

    Composite radioRight = new Composite(shell, SWT.BORDER);
    radioRight.setLayout(new GridLayout(4, false));
    radioRight.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

    for (int i = 0; i < 8; i++)
    {
        Button button = new Button(radioRight, SWT.RADIO);
        button.setText("Radio " + i);
        button.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    }

    Group groupLeft = new Group(shell, SWT.NONE);
    groupLeft.setLayout(new GridLayout(6, false));
    groupLeft.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

    for (int i = 0; i < 12; i++)
    {
        Label label = new Label(groupLeft, SWT.NONE);
        label.setText("Something " + i);
        label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    }

    Group groupRight = new Group(shell, SWT.NONE);
    groupRight.setLayout(new GridLayout(1, false));
    groupRight.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));

    for (int i = 0; i < 2; i++)
    {
        Label label = new Label(groupRight, SWT.NONE);
        label.setText("Something " + i);
        label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    }
    Group bottom = new Group(shell, SWT.NONE);
    bottom.setLayout(new GridLayout(6, false));
    bottom.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

    for (int i = 0; i < 12; i++)
    {
        Label label = new Label(bottom, SWT.NONE);
        label.setText("Something " + i);
        label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    }

    Composite buttonComp = new Composite(shell, SWT.NONE);
    buttonComp.setLayout(new GridLayout(2, true));
    buttonComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

    Button left = new Button(buttonComp, SWT.PUSH);
    left.setText("Left");
    left.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    Button right = new Button(buttonComp, SWT.PUSH);
    right.setText("Right");
    right.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

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

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

Выглядит так:

Изображение 174551

  • 0
    БОЛЬШОЕ ВАМ СПАСИБО!!!! Это было очень полезно!
  • 0
    @pepperpotts Добро пожаловать!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню