1

嗨..我在java中有这段代码......

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;


public class testTabs {
    static int count;
    public static void main (String [] args) {
        Display display = new Display ();
        final Shell shell = new Shell(display);
        shell.setLayout(new FillLayout());
        shell.setText("SWT TabFolder Example");


        CTabFolder folder = new CTabFolder(shell,SWT.NONE);
        CTabItem item = new CTabItem(folder,SWT.UP);
        item.setText("First");


        CTabItem item1 = new CTabItem(folder,SWT.UP);
        item1.setText("First new");

//---------------------------------------------------   

        CTabFolder fold = new CTabFolder(folder,SWT.UP);
        CTabItem ite = new CTabItem(fold,SWT.UP);
        ite.setText("Second");
        final Composite test = new Composite(fold,SWT.NONE);
        test.setLayout(new RowLayout());
        Text tab1 = new Text(test,SWT.NONE);
        tab1.setText("Testing");
        tab1.setEditable(true);
        ite.setControl(test);
        item.setControl(fold);

        Button add = new Button(test,SWT.PUSH);
        add.setText("ADD");
        SelectionAdapter adap = new SelectionAdapter(){
            public void widgetSelected(SelectionEvent e){
                Composite newcomp = new Composite(test,SWT.BORDER_DASH);
                Text testtext = new Text(newcomp,SWT.BORDER_SOLID);
                testtext.setText("Inside new Comp");
                count++;
                System.out.println(count);
                Control array[] = shell.getChildren();
                System.out.println(array.length);
                shell.pack();
            }
        };

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

    }
}

当我运行它时,复合“newcomp”不可见..有人可以帮助我吗?

4

2 回答 2

6

如果我修改您的代码以仅添加一个布局,那么它可以工作:

public void widgetSelected(SelectionEvent e) {
    Composite newcomp = new Composite(test,SWT.BORDER_DASH);
    newcomp.setLayout(new RowLayout());
    ....
于 2009-04-15T06:24:34.220 回答
0

尝试test.layout()在方法结束时使用widgetSelected

让我们知道它是否有效。

于 2009-09-02T13:17:00.633 回答