iteye_6843
2008-07-23 14:50
浏览 443
已采纳

SWT如何在当前窗口中打开新窗口?

请问,SWT中,如何实现在当前窗口中打开一个新窗口?由于刚接触SWT,还不懂改如何实现,谢谢!

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • lggegegmail 2008-07-23 19:22
    已采纳

    需要给控件添加事件监听,在事件执行中就可以去写打开另一个Dialog的代码了.

    [code="java"] final Button button = new Button(shell, SWT.NONE);

    button.addSelectionListener(new SelectionAdapter() {

    public void widgetSelected(SelectionEvent e) {

    new CustomDialog(Display.getCurrent().getActiveShell()).open();

    }

    }); [/code]

    打赏 评论
  • lggegegmail 2008-07-23 19:21

    [code="java"]import org.eclipse.swt.SWT;
    import org.eclipse.swt.events.SelectionAdapter;
    import org.eclipse.swt.events.SelectionEvent;
    import org.eclipse.swt.widgets.Button;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Shell;

    public class SwtApplication {
    protected Shell shell;

    public static void main(String[] args) throws Exception {
        SwtApplication window = new SwtApplication();
        window.open();
    }
    
    public void open() {
        final Display display = Display.getDefault();
        createContents();
        shell.open();
        shell.layout();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
    }
    
    protected void createContents() {
        shell = new Shell();
        shell.setSize(500, 375);
        shell.setText("SWT");
    
        final Button button = new Button(shell, SWT.NONE);
        button.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                new CustomDialog(Display.getCurrent().getActiveShell()).open();
            }
        });
        button.setText("button");
        button.setBounds(438, 308, 44, 23);
    }
    

    }[/code]

    打赏 评论
  • lggegegmail 2008-07-23 19:21

    [code="java"]import org.eclipse.swt.SWT;
    import org.eclipse.swt.widgets.Button;
    import org.eclipse.swt.widgets.Dialog;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Shell;

    public class CustomDialog extends Dialog {
    protected Object result;
    protected Shell shell;

    public CustomDialog(Shell parent) {
        super(parent, SWT.NONE);
    }
    
    public Object open() {
        createContents();
        shell.open();
        shell.layout();
        Display display = getParent().getDisplay();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        return result;
    }
    
    protected void createContents() {
        shell = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
        shell.setSize(312, 212);
        shell.setText("SWT Dialog");
    
        final Button button = new Button(shell, SWT.NONE);
        button.setText("button");
        button.setBounds(127, 74, 44, 23);
    }
    

    }[/code]

    打赏 评论

相关推荐 更多相似问题