zoukankan      html  css  js  c++  java
  • stackLayout

    stackLayout

        指的是堆叠布局,拥有该布局的控件可以包含若干控件,但是这些控件具有相同的大小和位置。每次通过指定布局的topControl属性来指定要显示的控件,而其他的控件不显示。指定显示的控件之后要调用包含该布局控件的layout方法重新布局,实例如下:

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

    结果如下:

  • 相关阅读:
    Remote desktop manager共享账号
    content is not supported outside 'script" or asp content' region
    How to pass values across the pages in ASP.net without using Session
    GitLab Flow
    C#如何获取系统downloads和documents路径
    sql server查询结果复制出来,没有换行(存进去的数据是换行的)
    Type Interceptors
    JsonNode、JsonObject常用方法
    java获取当前时间戳的方法
    Java中float/double取值范围与精度
  • 原文地址:https://www.cnblogs.com/sandyflower/p/3625002.html
Copyright © 2011-2022 走看看