Shell 类
Shell 是一种框架或窗口的复合控件,它有一个作为父控件的 Display,这通常也是默认 设置。SWT 支持两种不同 Shell 类型:一是用于实现主窗口的顶级 Shell;二是用于实现对话 框的 Shell。
构造方法:
1. Shell() 2. Shell(Display display) 3. Shell(Display display, int style) 4. Shell(int style) 5. Shell(Shell parent) 6. Shell(Shellparent, int style)
1. Shell shell=new Shell() 2. Shell shell=-new Shell(display); 3. Shell shell=new Shell(display,SWT.ClOSE|SWT.MAX|SWT.MIN) 4. Shell shell=new Shell(SWT.ClOSE|SWT.MAX|SWT.MIN) 5. Shell shell=new Shell(new Shell()) 6. Shell shell=new Shell(new Shell(),SWT.ClOSE|SWT.MAX|SWT.MIN)
Shell 提供了六种构造方法,其中 Shell(Shell parent)、Shell(Shell parent int style)传入的是 Shell 类的对象,创建一个对话框,其他几种构造方法传入的是 Display 类的对象,将会创建 一个顶级的 shell 窗口
shell 样式表。
实例:
1. package swt.dialog; 2. import org.eclipse.swt.*; 3. import org.eclipse.swt.widgets.*; 4. import org.eclipse.swt.layout.*; 5. public class ShellDialogExample { 6. public ShellDialogExample() { 7. final Display display = new Display(); 8. // 将窗口设置成对话框 9. final Shell shell = new Shell(display, SWT.DIALOG_TRIM); 10. // 在 Shell 容器上采用网格式布局, 11. GridLayout grid = new GridLayout(); 12. // 将容器设置成一列 13. grid.numColumns = 1; 14. shell.setLayout(grid); 15. shell.setText("Shell 对话框实例"); 16. shell.setSize(270, 190); 17. Label label1 = new Label(shell, SWT.NONE); 18. label1.setImage(display.getSystemImage(SWT.ICON_ERROR)); 19. // 设置提示性表情符 20. Label label2 = new Label(shell, SWT.NONE); 21. label2.setImage(display.getSystemImage(SWT.ICON_INFORMATION)); 22. Label label3 = new Label(shell, SWT.NONE); 23. label3.setImage(display.getSystemImage(SWT.ICON_WARNING)); 24. Label label4 = new Label(shell, SWT.NONE); 25. label4.setImage(display.getSystemImage(SWT.ICON_QUESTION)); 26. shell.open(); 27. shell.layout(); 28. while (!shell.isDisposed()) { 29. if (!display.readAndDispatch()) 30. display.sleep(); 31. } 32. } 33. public static void main(String[] args) { 34. new ShellDialogExample(); 35. } 36. }
- 该实例的组件定位没有使用以前所介绍的 setBounds(int x ,int y ,int width ,int height) 方法进行组件的绝对定位,而采用了网格布局 GridLayout 进行组件的定位。关于 GridLayout 的知识详见第 7 章网格布局一节。
- setImage(Image arg0)方法用来设置要显示的图片。如 label4.setImage(display.getSystem Image(SWT.ICON_QUESTION))用来获得系统的图像。其中,SWT.ICON_QUESTION 为 MessageBox 控件的常用信息提示表情符样式。在 6.2 节“MessageBox 控件”中 还要具体介绍。
- 定义 Shell 对话框除了本例中用 SWT.DIALOG_TRIM 样式外,还可以用构造方法Shell shell=new Shell(new Shell())。将 Shell shell = new Shell(display, SWT.DIALOG_ TRIM)语句换成 Shell shell=new Shell(new Shell())可达到同样效果
常用API:
- addShellListener(ShellListener listener) shell 监听器,将监听器添加到监听集合中,在 接收者上进行操作时通知监听器集合,通过监听器发送在 ShellListener 接口中定义 的一个消息来通知监听器。
- close()请求窗口管理器关闭接收者(这里指 Shell 窗体),窗口关闭方式与用户单击 “关闭框”或执行其他平台特定的按键和鼠标的组合,来指示应该被移出的窗口。
- forceActive()强制窗口管理器激活 Shell 窗口。
- getBounds()返回用矩形表示窗体区域。
- dispose()释放与接收者以及与其相关联的子类的操作系统资源。
- getLocation()获取接收者(Shell 窗口)在显示器的位置。
- getShell()获得接收者的 shell。 getSize()获得接收者的大小。
- isEnabled()如果接收者以及它的父类都处于可用状态,则返回 true;否则返回 false。
- isVisible()如果接收者以及它的父类都处于可见(显示)状态,则返回 true;否则返 回 false。 setActive()设置窗口管理器激活 Shell 窗口。
- setVisible(boolean visible)如果参数为 true,标记接收者可见;否则为不可见。 setEnabled(boolean enabled)如果参数为 true,接收者处于可用状态;否则处于不可用 状态。 open()设置接收者的显示,将它标记为可见,并且请求窗口管理器激活 Shell。