2012-04-13 8 views
5

Özel çubuklarda görüntülenecek kaydırma çubuklarını nasıl etkinleştiririm.StyledText? Kaydırma çubuklarını görüntüler, ancak custom.StyledText'in kaydırmasına izin vermiyor mu?Bir Java SWT penceresinde kaydırma çubuklarını etkinleştirme

package app; 

import org.eclipse.swt.SWT; 
import org.eclipse.swt.widgets.Composite; 
import org.eclipse.swt.widgets.Display; 
import org.eclipse.swt.widgets.Shell; 
import org.eclipse.swt.widgets.Label; 
import org.eclipse.swt.widgets.Text; 
import org.eclipse.swt.widgets.Button; 
import org.eclipse.swt.events.SelectionAdapter; 
import org.eclipse.swt.events.SelectionEvent; 
import org.eclipse.swt.events.MouseAdapter; 
import org.eclipse.swt.events.MouseEvent; 



import org.eclipse.swt.custom.StyledText; 
import org.eclipse.swt.custom.ScrolledComposite; 
public class myapp { 

protected Shell shlWhois; 
private Text text; 

/** 
* Launch the application. 
* @param args 
*/ 
public static void main(String[] args) { 
    try { 
     myapp window = new myapp(); 
     window.open(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

/** 
* Open the window. 
*/ 
public void open() { 
    Display display = Display.getDefault(); 
    createContents(); 
    shlWhois.open(); 
    shlWhois.layout(); 
    while (!shlWhois.isDisposed()) { 
     if (!display.readAndDispatch()) { 
      display.sleep(); 
     } 
    } 
} 

/** 
* Create contents of the window. 
*/ 
protected void createContents() { 
    shlWhois = new Shell(); 
    shlWhois.setSize(450, 300); 
    shlWhois.setText("Whois"); 

    Label lblDomain = new Label(shlWhois, SWT.NONE); 
    lblDomain.setBounds(10, 10, 55, 15); 
    lblDomain.setText("Domain"); 

    text = new Text(shlWhois, SWT.BORDER); 

    text.setBounds(72, 4, 260, 21); 

    final ScrolledComposite scrolledComposite_1 = new ScrolledComposite(shlWhois, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); 
    scrolledComposite_1.setAlwaysShowScrollBars(true); 
    final Composite c = new Composite(scrolledComposite_1, SWT.NONE); 
    scrolledComposite_1.setMinHeight(1000); 
    scrolledComposite_1.setExpandVertical(true); 
    scrolledComposite_1.setExpandHorizontal(true); 
    scrolledComposite_1.setBounds(10, 31, 403, 221); 

    final StyledText styledText = new StyledText(scrolledComposite_1, SWT.BORDER | SWT.WRAP); 

    scrolledComposite_1.setContent(styledText); 
    scrolledComposite_1.setMinSize(styledText.computeSize(SWT.DEFAULT, SWT.DEFAULT)); 

    Button btnWhois = new Button(shlWhois, SWT.NONE); 
    btnWhois.addMouseListener(new MouseAdapter() { 
     @Override 
     public void mouseDown(MouseEvent arg0) { 



     } 
    }); 
    btnWhois.addSelectionListener(new SelectionAdapter() { 
     @Override 
     public void widgetSelected(SelectionEvent arg0) { 
     } 
    }); 
    btnWhois.setBounds(338, 2, 75, 25); 
    btnWhois.setText("Search"); 



} 
} 

cevap

10

Sen ScrolledComposite gerekmez StyledText üzerinde SWT.V_SCROLL stilini kullanın. İşte layouts yerine setBounds ait olan, bir örnek: aynı zamanda bir yatay kaydırma çubuğunu isterseniz

/** 
* Create contents of the window. 
*/ 
protected void createContents() { 
    shlWhois = new Shell(); 
    shlWhois.setSize(450, 300); 
    shlWhois.setText("Whois"); 
    shlWhois.setLayout(new GridLayout(2, false)); 

    Label lblDomain = new Label(shlWhois, SWT.NONE); 
    lblDomain.setLayoutData(GridDataFactory.fillDefaults().create()); 
    lblDomain.setText("Domain"); 

    text = new Text(shlWhois, SWT.BORDER); 
    text.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create()); 

    final StyledText styledText = new StyledText(shlWhois, SWT.BORDER | SWT.V_SCROLL | SWT.MULTI | SWT.WRAP); 
    styledText.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).span(2, 1).create()); 

    Button btnWhois = new Button(shlWhois, SWT.NONE); 
    btnWhois.setText("Search"); 
} 

Sen stilleri SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI kullanabilirsiniz.