2012-04-13 29 views
5

Làm cách nào để bật thanh cuộn để hiển thị trên custom.StyledText? Nó hiển thị các thanh cuộn nhưng không cho phép custom.StyledText cuộn?Bật thanh cuộn trong cửa sổ Java SWT

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"); 



} 
} 

Trả lời

10

Bạn không cần ScrolledComposite, sử dụng SWT.V_SCROLL phong cách trên StyledText. Dưới đây là một ví dụ, với layouts thay vì setBounds:

/** 
* 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"); 
} 

Bạn có thể sử dụng phong cách SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI nếu bạn cũng muốn có một thanh cuộn ngang.

Các vấn đề liên quan