例2—1非常简单的shell
package pr;
import org.eclipse.swt.widgets.*;
public classSimpleShell {
SimpleShell(){
Displayd=newDisplay();//创建Display这个class的实例
Shells=newShell(d);//将Display的实例传给shell的够着来创建Shell的实例
s.setSize(500,500);//设置窗口的大小
s.open();
while(!s.isDisposed()){
if(!d.readAndDispatch())
d.sleep();
}
d.dispose();
}
public static void main(String[] args) {
SimpleShellss=newSimpleShell();
}
}
例2-3设定shell样式
package pr;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.*;
public classShellStylesExample {
ShellStylesExample(){
Displayd=newDisplay();
Shells=newShell(d,SWT.CLOSE|SWT.RESIZE );//创建窗口的样式有关闭按钮且可以调整大小
s.setSize(300,300);
s.open();
while(!s.isDisposed()){
if(!d.readAndDispatch())
d.sleep();
}
d.dispose();
}
public static void main(String[] args) {
ShellStylesExampless=newShellStylesExample();
}
}
例2-5创建一个可以开启在parent shell范围中的shell的instance
package pr;
import org.eclipse.swt.widgets.*;
public classChildShell {
ChildShell(Shellparent){
Shellchild=newShell(parent);//创建一个可以开启在parent shell范围中的shell的实例
child.setSize(200,200);//设置子窗口的大小
child.open();
}
}
例2-6:在parent shell之内开启childshell
package pr;
import org.eclipse.swt.widgets.*;
public classChildShellExample {
Display d=new Display();
ChildShellExample (){
Shells=newShell(d);
s.setSize(500,500);
s.open();
ChildShellcs=newChildShell(s);//在parent shell之内开启childshell
while(!s.isDisposed()){
if(!d.readAndDispatch())
d.sleep();
}
d.dispose();
}
public staticvoidmain(String[] args) {
ChildShellExampless=newChildShellExample();
}
}
例2-7:创建多个childshell的instance
package pr;
import org.eclipse.swt.widgets.*;
public classChildShellExample1 {
Displayd=new Display();
ChildShellExample1(){
Shells=newShell(d);
s.setSize(500,500);
s.open();
ChildShellcs1=newChildShell(s);
ChildShellcs2=newChildShell(s);
ChildShellcs3=newChildShell(s);//创建多个子窗口
while(!s.isDisposed()){
if(!d.readAndDispatch())
d.sleep();
}
d.dispose();
}
public static void main(String[] args) {
ChildShellExample1ss=newChildShellExample1();
}
}
例2-9:application modal 的dialog
package pr;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.SWT;
public classDialogExample extends Dialog{
DialogExample(Shell parent)
{
super(parent);
}
public String open()
{
Shellparent=getParent();
Shelldialog=newShell(parent,
SWT.DIALOG_TRIM|SWT.APPLICATION_MODAL);//创建一个application modal的dialog
dialog.setSize(100,100);
dialog.setText("A dialog");//设置标题
dialog.open();
Displaydisplay=parent.getDisplay();
while(!dialog.isDisposed())
{if(!display.readAndDispatch())
display.sleep();
}
return"After Dialog";
}
}
例2-10:开启dialog
package pr;
import org.eclipse.swt.widgets.*;
public classShellDialogExample {
ShellDialogExample()
{
Displayd=newDisplay();
Shells=newShell(d);
s.setSize(300,300);
s.open();
DialogExamplede=newDialogExample(s);//用parent shell开启dialog
Stringresult=de.open();
System.out.println(result);
while(!s.isDisposed()){
if(!d.readAndDispatch())
d.sleep();
}
d.dispose();
}
public static void main(String[] args) {
ShellDialogExampless=newShellDialogExample();
}
}
例 2-11:设定shell的icon
package pr;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.graphics.Image;
public classProfessionalShell {
ProfessionalShell(){
Display d=new Display();
Shells=newShell(d);
s.setSize(500,500);
s.setImage(new Image(d,"f:\\a.jpg"));//设置窗口的图标
s.setText("A Shell Example");
s.open();
while(!s.isDisposed()){
if(!d.readAndDispatch())
d.sleep();
}
d.dispose();
}
public static void main(String[] args) {
ProfessionalShellss=newProfessionalShell();
}
}
例3-1:创建menu bar
package pr;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.SWT;
public classMenuShell {
Display d;
Shell s;
MenuShell()
{
d=newDisplay();
s=newShell(d);
s.setSize(500,500);
s.setImage(newImage(d,"f:\\a.jpg"));
s.setText("A Shell Menu Example");
Menum=newMenu(s,SWT.BAR);//创建menu的instance
s.setMenuBar(m);
s.open();
while(!s.isDisposed()){
if(!d.readAndDispatch())
d.sleep();
}
d.dispose();
}
public static void main(String[] args) {
MenuShell ss=new MenuShell();
}
}
例3-2:file menu系统
package pr;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.SWT;
public classMenuShell1 {
Displayd;
Shell s;
MenuShell1()
{
d=newDisplay();
s=newShell(d);
s.setSize(500,500);
s.setImage(newImage(d,"f:\\a.jpg"));
s.setText("A Shell Menu Example");
Menum=newMenu(s,SWT.BAR);//设置菜单
MenuItemfile=newMenuItem(m,SWT.CASCADE);//建立File菜单且是层叠样式的菜单
file.setText("File");
Menufilemenu=newMenu(s,SWT.DROP_DOWN);//下拉式样式的菜单
file.setMenu(filemenu);
MenuItemopenItem=newMenuItem(filemenu,SWT.PUSH);//file菜单下的次级选项Open
openItem.setText("Open");
MenuItemexitItem=newMenuItem(filemenu,SWT.PUSH);//file菜单下的次级选项Exit
exitItem.setText("Exit");
s.setMenuBar(m);
s.open();
while(!s.isDisposed()){
if(!d.readAndDispatch())
d.sleep();
}
d.dispose();
}
public static void main(String[] args) {
MenuShell1 ss=new MenuShell1();
}
}
例3-3:完整的menu系统
package pr;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.SWT;
public classMenuShell2 {
Displayd;
Shell s;
MenuShell2()
{
d=newDisplay();
s=newShell(d);
s.setSize(500,500);
s.setImage(newImage(d,"f:\\a.jpg"));
s.setText("A Shell Menu Example");
Menum=newMenu(s,SWT.BAR);
//创建File menu并加入一个Exit项目
final MenuItem file=new MenuItem(m,SWT.CASCADE);
file.setText("File");
final Menu filemenu=new Menu(s,SWT.DROP_DOWN);
file.setMenu(filemenu);
final MenuItem openItem=new MenuItem(filemenu,SWT.PUSH);
openItem.setText("Open");
final MenuItemsepartor=new MenuItem(filemenu,SWT.SEPARATOR);//加入分隔条
final MenuItem exitItem=new MenuItem(filemenu,SWT.PUSH);
exitItem.setText("Exit");
//创建Edit menu并加入Cut,Copy与Paste项目
final MenuItem edit=new MenuItem(m,SWT.CASCADE);
edit.setText("Edit");
final Menu editmenu=new Menu(s,SWT.DROP_DOWN);
edit.setMenu(editmenu);
final MenuItem cutItem=new MenuItem(editmenu,SWT.PUSH);
cutItem.setText("Cut");
final MenuItem copyItem=new MenuItem(editmenu,SWT.PUSH);
copyItem.setText("Copy");
final MenuItem pasteItem=new MenuItem(editmenu,SWT.PUSH);
pasteItem.setText("Paste");
//创建Window menu并加入Child项目
final MenuItem window=new MenuItem(m,SWT.CASCADE);
window.setText("Window");
final Menu windowmenu=new Menu(s,SWT.DROP_DOWN);
window.setMenu(windowmenu);
final MenuItem maxItem=newMenuItem(windowmenu,SWT.PUSH);
maxItem.setText("Maximize");
final MenuItem minItem=newMenuItem(windowmenu,SWT.PUSH);
minItem.setText("Minimize");
//创建Help menu并加入About项目
final MenuItem help=new MenuItem(m,SWT.CASCADE);
help.setText("Help");
final Menu helpmenu=new Menu(s,SWT.DROP_DOWN);
help.setMenu(helpmenu);
final MenuItem aboutItem=new MenuItem(helpmenu,SWT.PUSH);
aboutItem.setText("About");
s.setMenuBar(m);
s.open();
while(!s.isDisposed()){
if(!d.readAndDispatch())
d.sleep();
}
d.dispose();
}
public static void main(String[] args) {
MenuShell2 ss=new MenuShell2();
}
}
例3-4:创建层叠式的submenu
package pr;
import org.eclipse.swt.widgets.*;
importorg.eclipse.swt.graphics.Image;
import org.eclipse.swt.SWT;
public class MenuShell3 {
Displayd;
Shell s;
MenuShell3()
{
d=new Display();
s=new Shell(d);
s.setSize(500,500);
s.setImage(newImage(d,"f:\\a.jpg"));
s.setText("AShell Menu Example");
Menum=new Menu(s,SWT.BAR);
//创建File menu并加入一个Exit项目
finalMenuItem file=new MenuItem(m,SWT.CASCADE);
file.setText("File");
finalMenu filemenu=new Menu(s,SWT.DROP_DOWN);
file.setMenu(filemenu);
finalMenuItem openItem=new MenuItem(filemenu,SWT.CASCADE);
openItem.setText("Open");
finalMenu submenu=new Menu(s,SWT.DROP_DOWN);//加入sunmenu引发次级menu从旁边层叠出现
openItem.setMenu(submenu);
finalMenuItem childItem=new MenuItem(submenu,SWT.PUSH);
childItem.setText("Child");
final MenuItem dialogItem=newMenuItem(submenu,SWT.PUSH);
dialogItem.setText("Dialog");
final MenuItem separator=new MenuItem(filemenu,SWT.SEPARATOR);
MenuItem exitItem=newMenuItem(filemenu,SWT.PUSH);
exitItem.setText("Exit");
//创建Editmenu并加入Cut,Copy与Paste项目
final MenuItem edit=newMenuItem(m,SWT.CASCADE);
edit.setText("Edit");
finalMenu editmenu=new Menu(s,SWT.DROP_DOWN);
edit.setMenu(editmenu);
finalMenuItem cutItem=new MenuItem(editmenu,SWT.PUSH);
cutItem.setText("Cut");
finalMenuItem copyItem=new MenuItem(editmenu,SWT.PUSH);
copyItem.setText("Copy");
finalMenuItem pasteItem=new MenuItem(editmenu,SWT.PUSH);
pasteItem.setText("Paste");
//创建Window menu并加入Child项目
finalMenuItem window=new MenuItem(m,SWT.CASCADE);
window.setText("Window");
finalMenu windowmenu=new Menu(s,SWT.DROP_DOWN);
window.setMenu(windowmenu);
finalMenuItem maxItem=new MenuItem(windowmenu,SWT.PUSH);
maxItem.setText("Maximize");
finalMenuItem minItem=new MenuItem(windowmenu,SWT.PUSH);
minItem.setText("Minimize");
//创建Help menu并加入About项目
finalMenuItem help=new MenuItem(m,SWT.CASCADE);
help.setText("Help");
finalMenu helpmenu=new Menu(s,SWT.DROP_DOWN);
help.setMenu(helpmenu);
finalMenuItem aboutItem=new MenuItem(helpmenu,SWT.PUSH);
aboutItem.setText("About");
s.setMenuBar(m);
s.open();
while(!s.isDisposed()){
if(!d.readAndDispatch())
d.sleep();
}
d.dispose();
}
publicstatic void main(String[] args) {
MenuShell3 ss=new MenuShell3();
}
}
例3-5:有listener的menu项目
package pr;
import org.eclipse.swt.widgets.*;
importorg.eclipse.swt.events.SelectionEvent;
importorg.eclipse.swt.events.SelectionListener;
importorg.eclipse.swt.graphics.Image;
import org.eclipse.swt.SWT;
public class MenuShell4 {
Displayd;
Shell s;
MenuShell4()
{
d=new Display();
s=new Shell(d);
s.setSize(500,500);
s.setImage(newImage(d,"f:\\a.jpg"));
s.setText("AShell Menu Example");
Menum=new Menu(s,SWT.BAR);
//创建File menu并加入一个Exit项目
finalMenuItem file=new MenuItem(m,SWT.CASCADE);
file.setText("File");
finalMenu filemenu=new Menu(s,SWT.DROP_DOWN);
file.setMenu(filemenu);
finalMenuItem openItem=new MenuItem(filemenu,SWT.CASCADE);
openItem.setText("Open");
finalMenu submenu=new Menu(s,SWT.DROP_DOWN);
openItem.setMenu(submenu);
finalMenuItem childItem=new MenuItem(submenu,SWT.PUSH);
childItem.setText("Child");
final MenuItem dialogItem=newMenuItem(submenu,SWT.PUSH);
dialogItem.setText("Dialog");
final MenuItem separator=new MenuItem(filemenu,SWT.SEPARATOR);
MenuItem exitItem=newMenuItem(filemenu,SWT.PUSH);
exitItem.setText("Exit");
//创建Editmenu并加入Cut,Copy与Paste项目
final MenuItem edit=newMenuItem(m,SWT.CASCADE);
edit.setText("Edit");
final Menu editmenu=new Menu(s,SWT.DROP_DOWN);
edit.setMenu(editmenu);
finalMenuItem cutItem=new MenuItem(editmenu,SWT.PUSH);
cutItem.setText("Cut");
finalMenuItem copyItem=new MenuItem(editmenu,SWT.PUSH);
copyItem.setText("Copy");
finalMenuItem pasteItem=new MenuItem(editmenu,SWT.PUSH);
pasteItem.setText("Paste");
//创建Window menu并加入Child项目
finalMenuItem window=new MenuItem(m,SWT.CASCADE);
window.setText("Window");
finalMenu windowmenu=new Menu(s,SWT.DROP_DOWN);
window.setMenu(windowmenu);
finalMenuItem maxItem=new MenuItem(windowmenu,SWT.PUSH);
maxItem.setText("Maximize");
finalMenuItem minItem=new MenuItem(windowmenu,SWT.PUSH);
minItem.setText("Minimize");
//创建Help menu并加入About项目
finalMenuItem help=new MenuItem(m,SWT.CASCADE);
help.setText("Help");
finalMenu helpmenu=new Menu(s,SWT.DROP_DOWN);
help.setMenu(helpmenu);
finalMenuItem aboutItem=new MenuItem(helpmenu,SWT.PUSH);
aboutItem.setText("About");
//将listener加到widget中
childItem.addSelectionListener(newSelectionListener(){
publicvoid widgetSelected(SelectionEvent e){
Shellparent=(Shell)maxItem.getParent().getParent();
ChildShellcs=new ChildShell(parent);
}
publicvoid widgetDefaultSelected(SelectionEvent e){
}
});
dialogItem.addSelectionListener(newSelectionListener(){
publicvoid widgetSelected(SelectionEvent e){
Shellparent=(Shell)maxItem.getParent().getParent();
DialogExamplede=new DialogExample(parent);
de.open();
}
publicvoid widgetDefaultSelected(SelectionEvent e){
}
});
exitItem.addSelectionListener(newSelectionListener(){
publicvoid widgetSelected(SelectionEvent e){
System.exit(0);
}
publicvoid widgetDefaultSelected(SelectionEvent e){
}
});
cutItem.addSelectionListener(newSelectionListener(){
publicvoid widgetSelected(SelectionEvent e){
System.out.println("Cut");
}
publicvoid widgetDefaultSelected(SelectionEvent e){
}
});
copyItem.addSelectionListener(newSelectionListener(){
publicvoid widgetSelected(SelectionEvent e){
System.out.println("Copy");
}
publicvoid widgetDefaultSelected(SelectionEvent e){
}
});
pasteItem.addSelectionListener(newSelectionListener(){
publicvoid widgetSelected(SelectionEvent e){
System.out.println("Paste");
}
publicvoid widgetDefaultSelected(SelectionEvent e){
}
});
maxItem.addSelectionListener(newSelectionListener(){
publicvoid widgetSelected(SelectionEvent e){
Shellparent=(Shell)maxItem.getParent().getParent();
parent.setMaximized(true);//最大化
}
publicvoid widgetDefaultSelected(SelectionEvent e){
}
});
minItem.addSelectionListener(newSelectionListener(){
publicvoid widgetSelected(SelectionEvent e){
Shellparent=(Shell)minItem.getParent().getParent();
parent.setMaximized(false);
}
publicvoid widgetDefaultSelected(SelectionEvent e){
}
});
aboutItem.addSelectionListener(newSelectionListener(){
publicvoid widgetSelected(SelectionEvent e){
Shellparent=(Shell)minItem.getParent().getParent();
parent.setMaximized(false);
}
publicvoid widgetDefaultSelected(SelectionEvent e){
}
});
s.setMenuBar(m);
s.open();
while(!s.isDisposed()){
if(!d.readAndDispatch())
d.sleep();
}
d.dispose();
}
publicstatic void main(String[] args) {
MenuShell4 ss=new MenuShell4();
}
}
例3-6:有键盘快捷键的menu系统
package pr;
import org.eclipse.swt.widgets.*;
importorg.eclipse.swt.graphics.Image;
import org.eclipse.swt.SWT;
importorg.eclipse.swt.events.HelpEvent;
importorg.eclipse.swt.events.HelpListener;
importorg.eclipse.swt.events.SelectionEvent;
importorg.eclipse.swt.events.SelectionListener;
public class MenuShell5 {
Displayd;
Shell s;
MenuShell5()
{
d=new Display();
s=new Shell(d);
s.setSize(500,500);
s.setImage(new Image(d,"f:\\a.jpg"));
s.setText("AShell Menu Example");
Menum=new Menu(s,SWT.BAR);
//创建File menu并加入一个Exit项目
finalMenuItem file=new MenuItem(m,SWT.CASCADE);
file.setText("&File");
finalMenu filemenu=new Menu(s,SWT.DROP_DOWN);
file.setMenu(filemenu);
finalMenuItem openItem=new MenuItem(filemenu,SWT.CASCADE);
openItem.setText("&Open");
finalMenu submenu=new Menu(s,SWT.DROP_DOWN);
openItem.setMenu(submenu);
finalMenuItem childItem=new MenuItem(submenu,SWT.PUSH);
childItem.setText("&Child\tCTRL+D");//加入键盘快捷键
finalMenuItem dialogItem=new MenuItem(submenu,SWT.PUSH);
dialogItem.setText("&Dialog\tCTRL+D");
dialogItem.setAccelerator(SWT.CTRL+'D');
MenuItemexitItem=new MenuItem(filemenu,SWT.PUSH);
finalMenuItem separator =new MenuItem(filemenu,SWT.SEPARATOR);
exitItem.setText("&Exit");
//创建Edit menu并加入Cut,Copy与Paste项目
finalMenuItem edit=new MenuItem(m,SWT.CASCADE);
edit.setText("&Edit");
Menueditmenu=new Menu(s,SWT.DROP_DOWN);
edit.setMenu(editmenu);
finalMenuItem cutItem=new MenuItem(editmenu,SWT.PUSH);
cutItem.setText("&Cut");
finalMenuItem copyItem=new MenuItem(editmenu,SWT.PUSH);
copyItem.setText("&Copy");
finalMenuItem pasteItem=new MenuItem(editmenu,SWT.PUSH);
pasteItem.setText("&Paste");
//创建Options menu并加入Menu项目
finalMenuItem options=new MenuItem(m,SWT.CASCADE);
options.setText("&Options");
finalMenu optionsmenu=new Menu(s,SWT.DROP_DOWN);
options.setMenu(optionsmenu);
finalMenuItem checkItem=new MenuItem(optionsmenu,SWT.CHECK);
checkItem.setText("&CheckedOption");
finalMenuItem optionsseparator=new MenuItem(optionsmenu,SWT.SEPARATOR);
finalMenuItem radioItem1=new MenuItem(optionsmenu,SWT.RADIO);
radioItem1.setText("Radio&One");
finalMenuItem radioItem2=new MenuItem(optionsmenu,SWT.RADIO);
radioItem1.setText("Radio&Two");
//创建Window menu并加入Child项目
finalMenuItem window=new MenuItem(m,SWT.CASCADE);
window.setText("&Window");
Menuwindowmenu=new Menu(s,SWT.DROP_DOWN);
window.setMenu(windowmenu);
finalMenuItem maxItem=new MenuItem(windowmenu,SWT.PUSH);
maxItem.setText("Ma&ximize");
finalMenuItem minItem=new MenuItem(windowmenu,SWT.PUSH);
minItem.setText("Min&imize");
//创建Help menu并加入About项目
finalMenuItem help=new MenuItem(m,SWT.CASCADE);
help.setText("&Help");
finalMenu helpmenu=new Menu(s,SWT.DROP_DOWN);
help.setMenu(helpmenu);
finalMenuItem aboutItem=new MenuItem(helpmenu,SWT.PUSH);
aboutItem.setText("&About");
childItem.addSelectionListener(newSelectionListener(){
publicvoid widgetSelected(SelectionEvent e){
Shellparent=(Shell)maxItem.getParent().getParent();
ChildShellcs=new ChildShell(parent);
}
publicvoid widgetDefaultSelected(SelectionEvent e){
}
});
dialogItem.addSelectionListener(newSelectionListener(){
publicvoid widgetSelected(SelectionEvent e){
Shellparent=(Shell)maxItem.getParent().getParent();
DialogExamplede=new DialogExample(parent);
de.open();
}
publicvoid widgetDefaultSelected(SelectionEvent e){
}
});
exitItem.addSelectionListener(newSelectionListener(){
publicvoid widgetSelected(SelectionEvent e){
System.exit(0);
}
publicvoid widgetDefaultSelected(SelectionEvent e){
}
});
cutItem.addSelectionListener(newSelectionListener(){
publicvoid widgetSelected(SelectionEvent e){
System.out.println("Cut");
}
publicvoid widgetDefaultSelected(SelectionEvent e){
}
});
copyItem.addSelectionListener(newSelectionListener(){
publicvoid widgetSelected(SelectionEvent e){
System.out.println("Copy");
}
publicvoid widgetDefaultSelected(SelectionEvent e){
}
});
pasteItem.addSelectionListener(newSelectionListener(){
publicvoid widgetSelected(SelectionEvent e){
System.out.println("Paste");
}
publicvoid widgetDefaultSelected(SelectionEvent e){
}
});
maxItem.addSelectionListener(newSelectionListener(){
publicvoid widgetSelected(SelectionEvent e){
Shellparent=(Shell)maxItem.getParent().getParent();
parent.setMaximized(true);//最大化
}
publicvoid widgetDefaultSelected(SelectionEvent e){
}
});
minItem.addSelectionListener(newSelectionListener(){
publicvoid widgetSelected(SelectionEvent e){
Shellparent=(Shell)minItem.getParent().getParent();
parent.setMaximized(false);
}
publicvoid widgetDefaultSelected(SelectionEvent e){
}
});
aboutItem.addSelectionListener(newSelectionListener(){
publicvoid widgetSelected(SelectionEvent e){
Shellparent=(Shell)minItem.getParent().getParent();
parent.setMaximized(false);
}
publicvoid widgetDefaultSelected(SelectionEvent e){
}
});
s.setMenuBar(m);
s.open();
while(!s.isDisposed()){
if(!d.readAndDispatch())
d.sleep();
}
d.dispose();
}
publicstatic void main(String[] args) {
MenuShell5 ss=new MenuShell5();
}
}