Categorías
Rich Client Platform(RCP)

Tutorial de Eclipse RCP: diseñe su vista con FormLayout

Digamos que cada widget tiene 4 lados, por ejemplo, un botón tiene arriba, abajo, izquierda y derecha. FormLayout funciona usando FormAttachments para cada lado del widget. A FormAttachment especifica la posición relativa al contenedor principal u otro widget en el mismo compuesto.

Todos los siguientes ejemplos asumen que sabe cómo crear una aplicación de complemento con una vista, ya que el código funcionará bajo createPartControl () método.

1. Uso básico de FormLayout

El uso básico de FormLayout es el siguiente:

public void createPartControl(Composite parent) {
	//create a FormLayout and set its margin
	FormLayout layout = new FormLayout();
	layout.marginHeight = 5;
	layout.marginWidth = 5;
 
	//set layout for parent
	parent.setLayout(layout);
 
	//create a button or any other widget
	Button button2 = new Button(parent, SWT.PUSH);
	button2.setText("B2");
 
	//create FormData and set each of its sides
	FormData formData = new FormData();
	formData.top = new FormAttachment(0, 0);
	formData.bottom = new FormAttachment(50, 0);
	formData.left = new FormAttachment(10, 0);
	formData.right = new FormAttachment(60, 0);
 
	//set FormDate for button
	button2.setLayoutData(formData);
}

Como se muestra en el ejemplo anterior, necesitaremos crear varios FormAttachments. FormAttachment tiene el formato de nuevo FormAttachment (x, y). «x» es una fracción del ancho del compuesto principal (desde la izquierda) o la altura (desde la parte superior). «y» es un desplazamiento (en píxeles) de la posición del adjunto.

Por ejemplo, lo siguiente establecerá la posición superior del widget en el 10% de las alturas: 5 píxeles.

  Cargue la imagen existente en el panel usando Eclipse SWT
formData.top = new FormAttachment (10, -5);

La característica más interesante de FormAttachment es que puede establecer la posición en función de otro widget. En ese caso, «x» es otro widget.

Por ejemplo, el siguiente código establece la posición izquierda del widget para que sea otro widget, es decir, la posición derecha del botón1 + 5 píxeles.

formData.left = new FormAttachment (button1, 5);

El botón del ejemplo anterior tendrá el siguiente aspecto:

2. Adjuntar a otros widgets

El siguiente ejemplo contiene 3 botones que utilizan FormAttachment para establecer posiciones relativas a los widgets en el mismo compuesto.

public void createPartControl(Composite parent) {
	// create a FormLayout and set its margin
	FormLayout layout = new FormLayout();
	layout.marginHeight = 5;
	layout.marginWidth = 5;
 
	// set layout for parent
	parent.setLayout(layout);
 
	Button button1 = new Button(parent, SWT.PUSH);
	button1.setText("B1");
 
	// create a button or any other widget
	Button button2 = new Button(parent, SWT.PUSH);
	button2.setText("B2");
 
	// create FormData and set each of its sides
	FormData formData = new FormData();
	formData.top = new FormAttachment(button1, 0);
	formData.bottom = new FormAttachment(30, 0);
	formData.left = new FormAttachment(10, 0);
	formData.right = new FormAttachment(50, 0);
 
	// set FormDate for button
	button2.setLayoutData(formData);
 
	// create a button or any other widget
	Button button3 = new Button(parent, SWT.PUSH);
	button3.setText("B2");
 
	// create FormData and set each of its sides
	FormData formData2 = new FormData();
	formData2.top = new FormAttachment(button2, 0);
	formData2.bottom = new FormAttachment(50, 0);
	formData2.left = new FormAttachment(button2, 0);
	formData2.right = new FormAttachment(80, 0);
 
	// set FormDate for button
	button3.setLayoutData(formData2);
}
  Tutorial de Eclipse GEF - GEF MVC

Los tres botones se pueden configurar fácilmente encadenados con la posición relativa al widget en el mismo compuesto.

formato

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *