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