Как сделать окно / оболочку SWT и все компоненты на ней регулируемыми? - PullRequest
0 голосов
/ 11 февраля 2019

Итак, я создал окна / оболочки с кнопками в приложении, но я хочу, чтобы при расширении все изменялось, а не оставалось в одном углу.Я использовал SWT и конструктор окон, чтобы добиться этого, я использовал макет Absolute, и теперь, когда я нажимаю на весь экран, все это в одном углу, как я могу сделать это эстетически приятным, чтобы все кнопки и надписи также расширялись?

1 Ответ

0 голосов
/ 13 февраля 2019

Пожалуйста, обратите внимание на стандартные макеты в SWT.См. Как разместить ваши виджеты и Понимание макетов .

Например, ниже приведен пример кода, в котором я создал 2 метки и 2 текста в макете сетки, которые будут заполняться по горизонтали при изменении размера.Вы можете изменить его в соответствии с вашими потребностями.

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class SampleApplication
{

    protected Shell shell;
    private Text text;
    private Text text_1;

    /**
     * Launch the application.
     * @param args
     */
    public static void main(final String[] args)
    {
        try
        {
            SampleApplication window = new SampleApplication();
            window.open();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    /**
     * Open the window.
     */
    public void open()
    {
        Display display = Display.getDefault();
        createContents();
        shell.open();
        shell.layout();
        while (!shell.isDisposed())
        {
            if (!display.readAndDispatch())
            {
                display.sleep();
            }
        }
    }

    /**
     * Create contents of the window.
     */
    protected void createContents()
    {
        shell = new Shell();
        shell.setSize(450, 224);
        shell.setText("SWT Application");
        shell.setLayout(new GridLayout(2, false));

        Label lblNewLabel = new Label(shell, SWT.NONE);
        lblNewLabel.setText("Name");
        lblNewLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));

        text = new Text(shell, SWT.BORDER);
        text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

        Label lblNewLabel_1 = new Label(shell, SWT.NONE);
        lblNewLabel_1.setText("ID");
        lblNewLabel_1.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));

        text_1 = new Text(shell, SWT.BORDER);
        text_1.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

    }
}
...