Swt/Jface中提供了各种各样的Dialog,一般情况下就能满足我们的需求,现在把这些dialog介绍一下,
下一篇文章再继续将如何自定义Dialog
一、MessageDialog
1,MessageDialog的用法很简单,只需要一句话.
![](https://i-blog.csdnimg.cn/blog_migrate/4b9a9df50fbc01c3df20afb435e90197.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/fd8ce7b4c7692e435f27a06780fb0cdb.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/2dd0d4c60bab523163ab153ef8e4b24f.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/df66f3d562723f0bac762b6668c6774f.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/5d3842003e81ac240f413a68914e12a6.jpeg)
2,这四个的不同之处有三点:
提示的图标、 显示的按钮、 返回值
openInfomation 类似i的图标 一个确定 void
openConfirm 问号图标 确定和取消 boolean
openQuestion 问号图标 是和否 boolean
openError 一个X的图标 确定 void
最后说一下,MessageDialog的大小不能根据内容自动调整,对于少量提示信息的时候显得大了些。
3,InputDialog输入的dialog
使用方法:
![](https://i-blog.csdnimg.cn/blog_migrate/d7eb38d3c8b41da0cdf2ad12bed088ee.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/64832ec1edd2fde9f49a10e24e928fae.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/fe4afc7287930ad65f6b58f797ca288d.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/38dc4f6d4825d6c0b80e00596839c901.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/43254eb42e697aa0cb06444b74eb2f2d.jpeg)
注意最后一个参数是"验证器",如果想验证数据可以提供一个验证器,并在这里使用。验证其的写法:
![](https://i-blog.csdnimg.cn/blog_migrate/4a576bc5bc31bc203c202cb707df9f9b.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/0551d3beb8d19da2bab906fda6b97ac1.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/2a58638b81ae869a02b5d39a34ca72ff.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/3e8ebe677e3faee6041dbf8d4569a863.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/852364e1ae1b5733769010722f071491.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/08b0f861e93b2b8671e8cfeb5577c6ea.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/d552e96fef9b3ce620933d1877964e4c.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/172014a098944e79663ded279e1b5baa.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/27a3474be7df81ca8909d1f6a85f5ccb.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/00f27b5af2e69cd5c3b680aa6e6c9f84.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/3b444ee656b9c255e1a4627d549b7fd1.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/f96d7542b774924188b8a05a45b6660a.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/eb910b1e23ad336c31998b526063fb90.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/b2a6f09f3103d8d0930f2b6759aa4bc1.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/82234b491dc4cb010ca5f5bb5b12ef78.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/ab001fa4fbda375746f94f3a8e37f04a.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/19e62f1349df88d086f29c4ba963d5c6.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/7c8f63e83117a495f240e7b3f9b2472b.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/16579844a32f3bc93c7043053700a644.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/062b5bc6575ef2a4e57b815e1f3a652d.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/bd97a0d5c231d4fa6b484b23bb33a7ef.jpeg)
然后改写定义语句为
![](https://i-blog.csdnimg.cn/blog_migrate/508e4448dfdafee3b3ac0c0c50b2d5cb.jpeg)
二、上边说了MessageDialog不能自动调整大小,那什么能自动调整大小呢?答案是MessageBox.
同样继承自Dialog.
1,使用方法:MessageBox的使用方法稍微复杂,需要3句
![](https://i-blog.csdnimg.cn/blog_migrate/c05ceb2f7c89ab7bfd3f6cf0b377ec38.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/916b85d35783d75a4ae261bd130035fa.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/ab678ccb47af9ad111eda82e1f9c0037.jpeg)
2,MessageBox同样可以控制图标和按钮数
是通过new的时候加入式样来实现的,例如
![](https://i-blog.csdnimg.cn/blog_migrate/cb633df8490ed2b4e42daa910154dff9.jpeg)
做过SWT开发的人对这种格式应该不陌生,到处都是。
图标的种类:
SWT.ICON_ERROR
SWT.ICON_INFORMATION
SWT.ICON_QUESTION
SWT.ICON_WARNING
按钮的组合:
SWT.OK
SWT.OK|SWT.CANCEL
SWT.YES|SWT.NO
SWT.YES|SWT.NO|SWT.CANCEL
SWT.RETRY|SWT.CANCEL
SWT.ABORT|SWT.RETRY|SWT.IGNORE
仔细看一下就是我们平时经常看到的各种对话框。
三、颜色选择对话框
不多说,使用方法几乎在swt中遍地都是的用法。
![](https://i-blog.csdnimg.cn/blog_migrate/b9154b557f76940dc020efc14723caed.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/b9313b0d4fb500a4d2db90f85f7e8690.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/e57c79cc0325d740449356c2b40738f4.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/3b16d8a96bee53189c66318a37bbb441.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/1bb9f2b35592942ef59be170aa9fc26c.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/75c876ec942da9fe43bed52c5a4a9b7a.jpeg)
注意color使用过后要dispose();
四、字体选择对话框
有了上边的一些经验其实在有eclipse这种编辑器的帮助下猜着就可以写了
![](https://i-blog.csdnimg.cn/blog_migrate/05c9fcfc416acea8524a8d2f1cafe883.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/01a27eb2b44b49f5e33f420fb9f46c69.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/012e84a6d1d150a27b0e00428cf4bf7d.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/160ad6be87f2ea87146e149712a5474d.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/0165956775e0d2192c554b6b2f6e9bb2.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/1cc5c28c761e02e5b4333660cc425d09.jpeg)
同样在结束后font.dispose();
五、打印对话框,同上的使用方法,同上的需要dispose
![](https://i-blog.csdnimg.cn/blog_migrate/3fbfec1b5d78c744b0f497d60ef27f73.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/34d00fb34c5a37536c2bb4b098efeb02.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/f681ba06b258e86408ec3d1f9b81b9ed.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/45643d366a76dbb32c2475181d0ca537.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/407361d0376e70c4ff72a23b66b05543.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/967c4e5f25ba228e617d2ea3a96c017c.jpeg)
六、文件选择对话框:同上
1,实现方法
![](https://i-blog.csdnimg.cn/blog_migrate/3b9a93c61faa9c0c7b5a264fc6436239.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/0d75d43ac4356f157b569a775750fd7d.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/201375530d6dd6f5e2db32869a4454ef.jpeg)
2,如果想选择多个文件,加上SWT.MULTI
![](https://i-blog.csdnimg.cn/blog_migrate/ba0c187a17897906ea9b3429bd1bc4f6.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/d7e5b0bebe81663a0e7fcfe9e061600b.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/930b6e6020aca091e176c42d4f7a94c9.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/00349703d48d638453372aa296653e2e.jpeg)
3,加入filter
![](https://i-blog.csdnimg.cn/blog_migrate/16c4bd03bfef4aee36473a0188b45d6c.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/f21e0614d720d97adcdb9e98504a2b6c.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/c3ff87c420b34fc037fc3d4d5d1b4b96.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/2d7a4f6f2dcb52aaf46139b600def722.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/67171cd72b3f4db655a809f1535b2788.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/b202f065dc81a2920d7a695d97838736.jpeg)
4,保存对话框
保存对话框并不提供保存功能,这个需要自己实现,它只提供界面,并得到用户选择的目录和输入的文件名
![](https://i-blog.csdnimg.cn/blog_migrate/98a686a059ca6b0309ada9deecd4c112.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/52c0d36bde081646d4424a50aea89d58.jpeg)
转载自:http://apps.hi.baidu.com/share/detail/15809844