欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SWT——利用一个窗口创建出多个子窗口

程序员文章站 2022-05-28 11:46:21
...

(1)创建一个窗口。

SWT——利用一个窗口创建出多个子窗口
import org.eclipse.swt.SWT;//SWT常量
import org.eclipse.swt.widgets.*;//Display,Shell
public class A {
	public static void main(String[] args){
		//(1)创建一个显示器
		Display display=new Display();
		//(2)在显示器中创建一个窗口,窗口的类型
		Shell parentShell=new Shell(display,SWT.SHELL_TRIM);
		parentShell.setText("I am parent_Window");
		//(3)窗口的显示与打开
		//parentShell.pack();//窗口自适应
		parentShell.setSize(400,400);//窗口大小自定义
		parentShell.open();
		//(4)关闭窗口
		while(!parentShell.isDisposed()){//当窗口没有释放(关闭)的时候
			if(!display.readAndDispatch()){//当操作系统的队列中没有等待处理的事件的时候
				display.sleep();//显示器休息一会儿
			}
		}//parentShell在关闭窗口的时候就已经dispose释放了
		display.dispose();//显示器释放系统资源	
	}
}

(2)在窗口中创建一个按钮。

SWT——利用一个窗口创建出多个子窗口

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
public class AB {
	public static void main(String[] args){
		//(1)创建一个显示器
		Display display=new Display();
		//(2)在显示器中创建一个窗口,窗口的类型
		Shell parentShell=new Shell(display,SWT.SHELL_TRIM);
		parentShell.setText("I am parent_Window");
		//(3)在窗口中添加按钮部件
		Button createButton=new Button(parentShell,SWT.CENTER);
		createButton.setText("create a new Window");
		//(4)窗口的显示与打开
		//parentShell.pack();//窗口自适应
		parentShell.setSize(400,400);//窗口大小自定义
		parentShell.open();
		createButton.setSize(200,100);
		//(5)关闭窗口
		while(!parentShell.isDisposed()){//当窗口没有释放(关闭)的时候
			if(!display.readAndDispatch()){//当操作系统的队列中没有等待处理的事件的时候
				display.sleep();//显示器休息一会儿
			}
		}//parentShell在关闭窗口的时候就已经dispose释放了
		display.dispose();//显示器释放系统资源
	}
}

(3)为按钮设置一个监听事件,弹出一个对话框。

SWT——利用一个窗口创建出多个子窗口

import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;
import org.eclipse.jface.dialogs.*;
public class B {
	public static void main(String[] args){
		//功能:从一个窗口创建出一个子窗口,实际上就是触发一个事件
		//(1)创建一个显示器
		Display display=new Display();
		//(2)在显示器中创建一个窗口,窗口的类型
		final Shell parentShell=new Shell(display,SWT.SHELL_TRIM);
		parentShell.setText("I am parent_Window");
		//(3)在窗口中添加按钮部件
		Button createButton=new Button(parentShell,SWT.CENTER);
		createButton.setText("create a new Window");
		//(4)窗口的显示与打开
		//parentShell.pack();//窗口自适应
		parentShell.setSize(400,400);//窗口自定义
		parentShell.open();
		createButton.setSize(200,100);
		//(5)在窗口上添加一个跳转事件
		createButton.addSelectionListener(new SelectionListener()//new SelectionAdapter()两个结果一模一样
		{
			public void widgetSelected(SelectionEvent event)
			{
				MessageDialog.openInformation(parentShell, "information dialog", "I am an information");
			}
			public void widgetDefaultSelected(SelectionEvent event)
			{
				
			}
		});
		//(6)关闭窗口
		while(!parentShell.isDisposed()){//当窗口没有释放(关闭)的时候
			if(!display.readAndDispatch()){//当操作系统的队列中没有等待处理的事件的时候
				display.sleep();//显示器休息一会儿
			}
		}//parentShell在关闭窗口的时候就已经dispose释放了
		display.dispose();//显示器释放系统资源
	}
}

(4)为按钮创建一个监听事件,能够创建多个子窗口。

SWT——利用一个窗口创建出多个子窗口
import org.eclipse.swt.SWT;//SWT常量
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;
public class C {
	public static void main(String[] args){
		//功能:从一个窗口创建出多个子窗口,实际上就是触发多个事件
		//(1)创建一个显示器
		Display display=new Display();
		//(2)在显示器中创建一个窗口
		final Shell parentShell=new Shell(display);
		parentShell.setText("I am parent_shell");		
		//(3)在窗口中添加按钮部件
		Button createButton=new Button(parentShell,SWT.CENTER);
		createButton.setText("create a new Window");
		//(4)窗口的显示与打开
		//parentShell.pack();//窗口自适应
		parentShell.setSize(400,400);//窗口大小自定义
		parentShell.open();
		createButton.setSize(200,100);		
		//(5)在窗口上添加一个跳转事件
		createButton.addSelectionListener(new SelectionAdapter(){
			public void widgetSelected(SelectionEvent event)
			{
				createChildrenShell(parentShell);
			}			
		});			
		//(6)关闭窗口
		while(!parentShell.isDisposed()){//当窗口没有释放(关闭)的时候
			if(!display.readAndDispatch()){//当操作系统的队列中没有等待处理的事件的时候
				display.sleep();//显示器休息一会儿
			}
		}//parentShell在关闭窗口的时候就已经dispose释放了
		display.dispose();//显示器释放系统资源		
	}
	public static Shell createChildrenShell(Shell parent){
		//(1)在父窗口中创建一个子窗口对象
		Shell childrenShell=new Shell(parent);//在父窗口中创建子窗口
		childrenShell.setText("I am child_shell");
		//(2)显示子窗口
		//childrenShell.pack();窗口自适应
		childrenShell.setSize(200,200);
		childrenShell.open();
		//(3)返回子窗口
		return childrenShell;
	}
}