Позиционирование 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) - Устанавливает местоположение виджета
Позиция начинается с верхнего левого угла, как показано ниже
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 (), чтобы указать размер виджета. Это единственное отличие, о котором я знаю.