import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StackLayout;
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.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class StackLLayout1 {
/**
* Launch the application.
*
* @param args
*/
public static void main(String[] args) {
Display display = Display.getDefault();
Shell shell = new Shell();
shell.setSize(450, 300);
shell.setText("SWT Application");
shell.setLayout(new FillLayout());
final Composite comp1 = new Composite(shell, SWT.NONE);
final StackLayout stackLayout = new StackLayout();
comp1.setLayout(stackLayout);
// 在comp1中创建两个文本框text
final Text txt1 = new Text(comp1, SWT.BORDER);
txt1.setText("txt1");
final Text txt2 = new Text(comp1, SWT.BORDER);
txt2.setText("txt2");
//stackLayout.topCOntrol= txt1;
Composite comp2 = new Composite(shell, SWT.NONE);
comp2.setLayout(new RowLayout());
Button btnButton1 = new Button(comp2, SWT.NONE);
btnButton1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
stackLayout.topControl = txt1; //必须指定显示的控件
comp1.layout(); //重新布局
}
});
btnButton1.setBounds(360, 10, 72, 22);
btnButton1.setText("显示txt1");
Button btnButton2 = new Button(comp2, SWT.NONE);
btnButton2.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
stackLayout.topControl = txt2;
comp1.layout();
}
});
btnButton2.setBounds(360, 80, 72, 22);
btnButton2.setText("显示txt2");
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
}