2012-02-12 11 views
6

¿Hay alguna manera de cambiar el orden de los elementos que se crean en el diseño de Fila, Quiero mostrarlo en los elementos como primero en mostrarse primero? Por ejemplo si creo element1, entonces elemento2 Element3, element4Cambiar el orden del elemento en RowLayout SWT Java

Quiero ver el diseño como element4 Element3 elemento2 element1

que significa que los elementos que duran a constituir será el primer elemento que será mostrado en el caparazón.

Hay una manera fácil de trabajar con el diseño de filas y hacerlo.

Quiero cambiar el siguiente ejemplo al mostrado Botón99 Botón98 Botón97 Botón96 Botón95 Botón94 .....................................

import org.eclipse.swt.SWT; 
import org.eclipse.swt.layout.RowLayout; 
import org.eclipse.swt.widgets.Button; 
import org.eclipse.swt.widgets.Display; 
import org.eclipse.swt.widgets.Shell; 

public class TestExample 
{ 
    public static void main(String[] args) 
    { 
     Display display = Display.getDefault(); 
     Shell shell = new Shell(display); 
     RowLayout rowLayout = new RowLayout(); 

     shell.setLayout(rowLayout); 

     for (int i=0;i<100;i++) 
     { 
      Button b1 = new Button(shell, SWT.PUSH); 
      b1.setText("Button"+i); 

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

Gracias de antemano.

Respuesta

0

Parece que no hay propiedades para establecer de modo que los elementos de RowLayout se coloquen en orden inverso. De modo que puede mantener los elementos en una matriz invertida y luego agregarlos en bucle o, para este ejemplo específico, simplemente cambie las condiciones de inicio y finalización del bucle for para que sea como Button99 Button98 ...: D

5

FillLayout, RowLayout y GridLayout utilice el orden z de los controles in order to determine the ordering of the controls. (Dado que esos tres diseños no permiten que los controles se superpongan visualmente entre sí, se omitirá el orden z).

El orden z predeterminado se basa en la creación; por lo tanto, controla de manera predeterminada el orden en que los agregó a su padre

Puede cambiar el orden z (y por lo tanto, cambiar el orden en que los widgets están pintados) utilizando los métodos Control.moveAbove() y Control.moveBelow().

+0

Muchas gracias por su respuesta. – user1205079

0

Si se utiliza uno de la disposición de la SWT, entonces:

ya: item01, item02, item03 insertar item04 item02 antes: 1. crear item04 2. item04.moveAbove (item02)

Display display = new Display(); 
Shell shell = new Shell(display); 
shell.setSize(640, 480); 

shell.setLayout(new FillLayout()); 

final Composite itemComposite = new Composite(shell, SWT.NONE); 
itemComposite.setLayout(new RowLayout()); 
Label item01 = new Label(itemComposite, SWT.NONE); 
item01.setText("item01"); 
final Label item02 = new Label(itemComposite, SWT.NONE); 
item02.setText("item02"); 
Label item03 = new Label(itemComposite, SWT.NONE); 
item03.setText("item03"); 

Composite buttonComposite = new Composite(shell, SWT.NONE); 
buttonComposite.setLayout(new GridLayout()); 
Button insertItem = new Button(buttonComposite, SWT.NONE); 
insertItem.setText("Insert"); 
insertItem.addListener(SWT.Selection, new Listener() { 
    public void handleEvent(Event arg0) { 
    Label item04 = new Label(itemComposite, SWT.NONE); 
    item04.setText("item04"); 
    item04.moveAbove(item02); 
    itemComposite.layout(); 
} 
}); 

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