Позиционирование SWT - setBounds () или setLocation ()

Позиционирование SWT - setBounds () или setLocation ()

Когда мы начинаем изучать программирование SWT GUI, мы всегда хотим выяснить, как нам позиционировать текстовое поле, метку, кнопку и другие виджеты. В SWT мы можем использовать методsetLocation() илиsetLocation(), чтобы указать размер и положение виджета или компонента.

Вот два метода, которые SWT использует для позиционирования.

1)setBounds(int x, int y, int witdh, int height) - Устанавливает размер и расположение виджета
2)setLocation(int x, int y) - Устанавливает местоположение виджета

Позиция начинается с верхнего левого угла, как показано ниже
image

setBounds () пример

Создайте метку в позиции x = 100, y = 50, width = 300, height = 30

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;

public class SWTPosition {

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

    Label positiongLabel = new Label(shell, SWT.BORDER);
    positiongLabel.setBounds(100,50,300,30);

    positiongLabel.setText("My Position is : " + positiongLabel.getBounds());

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

setLocation () пример

Создайте метку в позиции x = 100, y = 50, width = 300, height = 30

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;

public class SWTPosition {

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

    Label positiongLabel = new Label(shell, SWT.BORDER);
    positiongLabel.setSize(300,30);
    positiongLabel.setLocation(100, 50);

    positiongLabel.setText("My Position is : " + positiongLabel.getLocation());

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

В чем разница между setBounds () и setLocation ()?

В приведенном выше примере вы можете заметить, что между методами setBounds () и setLocation () не так много различий. Поскольку оба они также могут указывать позицию виджета, почему SWT дублирует его? Я понятия не имею, однако для setLocation () нужно указать еще один метод setSize (), чтобы указать размер виджета. Это единственное отличие, о котором я знаю.