2012-02-12 12 views
6

Czy istnieje sposób zmiany kolejności elementów tworzonych w układzie wierszy, Chcę wyświetlić go w elementach jako pierwszy na pierwszym wyświetleniu. Na przykład jeśli utworzyć element1, następnie element2 Element3, element4Zmiana kolejności elementów w wierszu RowLayout SWT Java

Chcę zobaczyć układ jako element4 Element3 element2 element1

że oznaczają elementy, które trwają zostać utworzony będzie pierwszym elementem, który będzie wyświetlane w powłoce.

Czy istnieje prosty sposób pracy z układem wierszy i zrób to.

Chcę zmienić poniższy przykład, aby wyświetlić Przycisk99 Przycisk98 Przycisk97 Przycisk96 Przycisk95 Przycisk94 .....................................

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(); 
      } 
     } 
    } 
} 

Dzięki z góry.

Odpowiedz

0

Wygląda na to, że nie ma właściwości do ustawienia, aby elementy RowLayout były ustawione w odwrotnej kolejności. Więc możesz trzymać elementy w tablicy odwrócone, a następnie dodać je wszystkie w pętli lub w tym konkretnym przykładzie, po prostu zmień warunek początkowy i końcowy pętli for, aby wyglądał jak Button99 Button98 ...: D

5

FillLayout, RowLayout i GridLayout używają kolejności z formantów in order to determine the ordering of the controls. (Ponieważ te trzy układy nie pozwalają na wizualne nakładanie się kontrolek, kolejność z będzie w przeciwnym razie ignorowana.)

Domyślna kolejność z na podstawie tworzenia - w ten sposób kontroluje domyślną kolejność, w której zostały dodane. do ich rodziców.

Możesz zmienić kolejność z (a tym samym zmienić kolejność, w której widżety są malowane), używając metod Control.moveAbove() i Control.moveBelow().

+0

Wielkie dzięki za odpowiedź. – user1205079

0

Jeśli używasz jedna z SWT w układzie, a następnie:

już

: item01, item02, item03 wstawić item04 przed item02: 1. utworzyć 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(); 
Powiązane problemy