2012-02-12 18 views
6

में तत्व के क्रम को बदलें पंक्ति पंक्ति में बनाए गए तत्वों के क्रम को बदलने का कोई तरीका है, मैं इसे पहले प्रदर्शित किए गए तत्वों में पहले प्रदर्शित करना चाहता हूं। उदाहरण के लिए अगर मैं element1 बनाते हैं, तो element2 element3, element4RowLayout SWT Java

मैं के रूप में element4 element3 element2 element1

है कि तत्वों कि पिछले बनाया जाना पहला तत्व जो हो जाएगा हो जाएगा मतलब लेआउट देखना चाहते हैं खोल में प्रदर्शित

पंक्ति लेआउट के साथ काम करने और इसे करने का कोई आसान तरीका है।

मैं निम्नलिखित उदाहरण को प्रदर्शित करने के लिए बदलना चाहता हूं बटन 99 बटन 98 बटन 9 बटन 9 6 बटन 95 बटन ....................................

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

अग्रिम में धन्यवाद।

उत्तर

0

ऐसा करने के लिए कोई प्रॉपर्टी नहीं है, इसलिए रोलायआउट के तत्व रिवर्स ऑर्डर में रखे जाएंगे। तो आप तत्वों को एक सरणी में उलटा कर सकते हैं और फिर उन्हें सभी लूप में जोड़ सकते हैं या इस विशिष्ट उदाहरण के लिए, बस लूप की शुरुआत और अंत स्थिति को बदलें ताकि यह बटन 99 बटन 98 की तरह हो ...: डी

5

FillLayout, RowLayout और GridLayout नियंत्रण in order to determine the ordering of the controls के जेड-ऑर्डर का उपयोग करें। (चूंकि उन तीन लेआउट नियंत्रण को एक-दूसरे को ओवरलैप करने की अनुमति नहीं देते हैं, इसलिए ज़ेड-ऑर्डर को अन्यथा अनदेखा किया जाएगा।)

डिफ़ॉल्ट जेड-ऑर्डर सृजन पर आधारित है - इस प्रकार आप उन्हें उस क्रम में डिफ़ॉल्ट रूप से नियंत्रित करते हैं उनके माता-पिता के लिए।

आप Control.moveAbove() और Control.moveBelow() विधियों का उपयोग करके ज़ेड-ऑर्डर (और इस प्रकार, विजेट को पेंट किए गए क्रम को बदल सकते हैं) को बदल सकते हैं।

+0

आपके उत्तर के लिए बहुत बहुत धन्यवाद। – user1205079

0

आप SWT के लेआउट, तो में से एक का उपयोग करते हैं:

पहले से ही

: item01, item02, item03 item02 से पहले item04 सम्मिलित करें: 1. बनाने 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();