关于JFace中的对话框MessageDialog类等其它类型对话框-阿里云开发者社区

开发者社区> 技术小哥哥> 正文

关于JFace中的对话框MessageDialog类等其它类型对话框

简介:
+关注继续查看

对话框是软件系统中最常用到的界面,对话框无处不在,从界面结构来说,对话框主要是由主体的界面组件和底部窗体按钮组成.

之前的例子中已经频繁的使用到了MessageDialog.openInformation方法来弹出一个简单的对话框.MessageDialog只是Dialog中的一种.

在Dialog中还有很多其他的对话框可以使用.

 

信息提示框(MessageDialog类)中的常用方法

1.static void openInformation(Shell parent, java.lang.String title, String message)  

例子:MessageDialog.openInformation(shell,"标题","提示信息"),它的三个参数都可以接受null值.

此方法仅仅用于提示信息.

2.static boolean openConfirm(Shell parent, java.lang.String title, String message)  

例子:

boolean b = MessageDialog.openConfirm(shell,"标题","提示信息");

if(b)

  System.out.println("你单击了"确定"按钮);

else

  System.out.println("你单击了"取消"按钮);

 

3.static boolean openQuestion(Shell parent, java.lang.String title, String message) 

使用方法和openConfirm一模一样,只是界面按钮变成了"是","否"

4. void openError(Shell parent,String title,String message)

例子:MessageDialog.openError(shell,"标题","提示信息");

错误提示框,界面上换成了明显的红叉图标.

5.void openWarning(Shell parent,String title,String message)

例子:MessageDialog.openWarning(shell,"标题","提示信息");

警告提示框,界面上换成了明显的警告图标.

 

如果仅提示很少的信息,则JFace的MessageDialog弹出的对话框显示的太大,SWT的MessageBox或许更好一些.两者相对比较而言,MessageBox可以自动调整对话框大小,但弹出一个对话框MessageBox要3句.而MessageDialog只需要一句.

1.MessageBox最简单的使用代码

MessageBox1.java

复制代码
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;

public class MessageBox1 {
    public static void main(String[] args) {
        final Display display = Display.getDefault();
        final Shell shell = new Shell();
        shell.setSize(327, 253);
        // ---------创建窗口中的其他界面组件-------------
        MessageBox messageBox = new MessageBox(shell);
        messageBox.setMessage("Hello World!");
        messageBox.open();
        // -----------------END------------------------
//        shell.layout();
//        shell.open();
        shell.dispose();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }
}
复制代码

 

2.MessageBox的式样和open方法返回值实例

MessageBox2.java

复制代码
 1 import org.eclipse.swt.SWT;
 2 import org.eclipse.swt.widgets.Display;
 3 import org.eclipse.swt.widgets.MessageBox;
 4 import org.eclipse.swt.widgets.Shell;
 5 
 6 public class MessageBox2 {
 7     public static void main(String[] args) {
 8         final Display display = Display.getDefault();
 9         final Shell shell = new Shell();
10         shell.setSize(327, 253);
11         // ---------创建窗口中的其他界面组件-------------
12         MessageBox msgbox = new MessageBox(shell, SWT.ICON_QUESTION | SWT.YES | SWT.NO);
13         msgbox.setMessage("确认删除吗?");
14         int rc = msgbox.open();
15         if (rc == SWT.YES)
16             System.out.println("您单击了“是”按钮");
17         if (rc == SWT.NO)
18             System.out.println("您单击了“否”按钮");
19         // -----------------END------------------------
20         // shell.layout();
21         // shell.open();
22         shell.dispose();
23         while (!shell.isDisposed()) {
24             if (!display.readAndDispatch())
25                 display.sleep();
26         }
27         display.dispose();
28     }
29 }
复制代码

 

运行结果:

代码中SWT.ICON_QUESTION式样用来在对话框上显示一个问号图标,它的其他式样的效果图下图.

另一种式样SWT.YES|SWT.NO则用来显示"是,否"按钮,它的组合方式还有很多.

 

颜色选择对话框(ColorDialog类)

SWT/JFace中设置颜色都需要用到Color类,如button.setBackground(Color color)是设置按钮背景色,而ColorDialog则可以弹出一个颜色选择对话框让用户选择颜色.

ColorDialog1.java

复制代码
 1 import org.eclipse.swt.graphics.Color;
 2 import org.eclipse.swt.graphics.RGB;
 3 import org.eclipse.swt.widgets.ColorDialog;
 4 import org.eclipse.swt.widgets.Display;
 5 import org.eclipse.swt.widgets.Shell;
 6 
 7 public class ColorDialog1 {
 8     public static void main(String[] args) {
 9         final Display display = Display.getDefault();
10         final Shell shell = new Shell();
11         shell.setSize(327, 253);
12         // ---------创建窗口中的其他界面组件-------------
13         ColorDialog dialog = new ColorDialog(shell);// 创建颜色选择对话框
14         RGB rgb = dialog.open();// 打开颜色选择对话框,并得到包含所选颜色的RGB值的对象
15         if (rgb != null) {// 根据rgb生成一个color对象
16             Color color = new Color(shell.getDisplay(), rgb);
17             // 使用颜色对象color ……。记得用完后调用color.dispose()将color释放掉
18         }
19         // -----------------END------------------------
20         // shell.layout();
21         // shell.open();
22         shell.dispose();
23         while (!shell.isDisposed()) {
24             if (!display.readAndDispatch())
25                 display.sleep();
26         }
27         display.dispose();
28     }
29 }
复制代码

 

运行结果:

字体选择对话框(FontDialog类)

FontDialog提供了字体选择对话框,它返回一个字体数据对象FontData,然后可以用FontData生成一个字体对象Font.使用FontDialog的实例如下:

FontDialog1.java

复制代码
 1 import org.eclipse.swt.graphics.Font;
 2 import org.eclipse.swt.graphics.FontData;
 3 import org.eclipse.swt.widgets.Display;
 4 import org.eclipse.swt.widgets.FontDialog;
 5 import org.eclipse.swt.widgets.Shell;
 6 
 7 public class FontDialog1 {
 8     public static void main(String[] args) {
 9         final Display display = Display.getDefault();
10         final Shell shell = new Shell();
11         shell.setSize(327, 253);
12         // ---------创建窗口中的其他界面组件-------------
13         FontDialog dialog = new FontDialog(shell);
14         FontData fontData = dialog.open();
15         if (fontData != null) {
16             Font font = new Font(shell.getDisplay(), fontData);
17             // 使用字体对象font ……。记得用完后,调用font.dispose()将font释放掉
18         }
19         // -----------------END------------------------
20         // shell.layout();
21         // shell.open();
22         shell.dispose();
23         while (!shell.isDisposed()) {
24             if (!display.readAndDispatch())
25                 display.sleep();
26         }
27         display.dispose();
28     }
29 }
复制代码

 

运行结果:

打印设置对话框(PrintDialog类)

打印在软件系统中是必不可少的功能,在SWT/JFace中要用到打印类Printer,PrintDialog则提供了打印设置对话框,它可以返回一个打印数据对象PrinterData,然后根据PrinterData可以得到打印对象Printer.

PrintDialog1.java

复制代码
 1 import org.eclipse.swt.printing.PrintDialog;
 2 import org.eclipse.swt.printing.Printer;
 3 import org.eclipse.swt.printing.PrinterData;
 4 import org.eclipse.swt.widgets.Display;
 5 import org.eclipse.swt.widgets.Shell;
 6 
 7 public class PrintDialog1 {
 8     public static void main(String[] args) {
 9         final Display display = Display.getDefault();
10         final Shell shell = new Shell();
11         shell.setSize(327, 253);
12         // ---------创建窗口中的其他界面组件-------------
13         PrintDialog dialog = new PrintDialog(shell);
14         PrinterData printerData = dialog.open();
15         if (printerData != null) {
16             Printer printer = new Printer(printerData);
17             // 使用printer对象 ……。记得用完后,调用printer.dispose()将printer释放掉
18         }
19         // -----------------END------------------------
20         // shell.layout();
21         // shell.open();
22         shell.dispose();
23         while (!shell.isDisposed()) {
24             if (!display.readAndDispatch())
25                 display.sleep();
26         }
27         display.dispose();
28     }
29 }
复制代码

 

运行结果:

目录选择对话框(DirectoryDialog类)

目录选择对话框,它提供了一个界面让用户选择目录,然后返回所选目录的路径(一个字符串),使用DirectoryDialog类的实例如下:

DirectoryDialog1.java

复制代码
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class DirectoryDialog1 {
    public static void main(String[] args) {
        final Display display = Display.getDefault();
        final Shell shell = new Shell();
        shell.setSize(327, 253);
        // ---------创建窗口中的其他界面组件-------------
        DirectoryDialog dialog = new DirectoryDialog(shell);
        dialog.setText("目录"); // 设置窗口标题
        dialog.setMessage("请选择一个目录:"); // 设置提示文字
        dialog.setFilterPath("c:/windows"); // 设置初始目录
        String dir = dialog.open(); // 打开对话框并返回一个包含所选目录路径的字符串
        if (dir != null)
            System.out.println(dir); // 打印出所选择目录的绝对路径
        // -----------------END------------------------
        // shell.layout();
        // shell.open();
        shell.dispose();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }
}
复制代码

 

运行结果:

文件选择对话框(FileDialog类)

文件选择对话框,提供一个界面让用户选择文件,然后返回所选文件爱你的全路径(路径+文件名).FileDialog还能设置文件选择的类型限制,也能选择多个文件.

一个最简单的实例:

FileDialog1.java

复制代码
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;

public class FileDialog1 {
    public static void main(String[] args) {
        final Display display = Display.getDefault();
        final Shell shell = new Shell();
        shell.setSize(327, 253);
        // ---------创建窗口中的其他界面组件-------------
        FileDialog dialog = new FileDialog(shell, SWT.OPEN);
        dialog.setFilterPath("c:/windows"); // 设置初始路径
        String fileName = dialog.open(); // 返回所选文件的全路径(路径+文件名)
        // -----------------END------------------------
        // shell.layout();
        // shell.open();
        shell.dispose();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }
}
复制代码

 

运行结果:

2.选择多个文件(SWT.MULTI式样)

FileDialog2.java

复制代码
 1 import org.eclipse.swt.SWT;
 2 import org.eclipse.swt.widgets.Display;
 3 import org.eclipse.swt.widgets.FileDialog;
 4 import org.eclipse.swt.widgets.Shell;
 5 
 6 public class FileDialog2 {
 7     public static void main(String[] args) {
 8         final Display display = Display.getDefault();
 9         final Shell shell = new Shell();
10         shell.setSize(327, 253);
11         // ---------创建窗口中的其他界面组件-------------
12         FileDialog dialog = new FileDialog(shell, SWT.OPEN | SWT.MULTI);// 加MULTI式样
13         String fileName = dialog.open(); // 返回最后一个选择文件的全路径
14         String[] fileNames = dialog.getFileNames(); // 返回所有选择文件的文件名,不包含路径
15         System.out.println(fileName == null ? "" : fileName);// 打印open方法的返回值
16         // 用一个循环将数组中的文件名加上路径打印出来
17         for (int i = 0; i < fileNames.length; i++)
18             System.out.println(dialog.getFilterPath() + "\\" + fileNames[i]);
19         // -----------------END------------------------
20         // shell.layout();
21         // shell.open();
22         shell.dispose();
23         while (!shell.isDisposed()) {
24             if (!display.readAndDispatch())
25                 display.sleep();
26         }
27         display.dispose();
28     }
29 }
复制代码

 

3.文件选择的限制类型(setFilterExtensions方法)

FileDialog3.java

复制代码
 1 import org.eclipse.swt.SWT;
 2 import org.eclipse.swt.widgets.Display;
 3 import org.eclipse.swt.widgets.FileDialog;
 4 import org.eclipse.swt.widgets.Shell;
 5 
 6 public class FileDialog3 {
 7     public static void main(String[] args) {
 8         final Display display = Display.getDefault();
 9         final Shell shell = new Shell();
10         shell.setSize(327, 253);
11         // ---------创建窗口中的其他界面组件-------------
12         FileDialog dialog = new FileDialog(shell, SWT.OPEN | SWT.MULTI);
13         dialog.setFilterNames(new String[] { "可执行文件 (*.exe)", "Microsoft Excel (*.xls)" });
14         dialog.setFilterExtensions(new String[] { "*.exe", "*.xls", "*.jpg", "*.*" });
15         String fileName = dialog.open();
16         System.out.println(fileName);
17         // -----------------END------------------------
18         // shell.layout();
19         // shell.open();
20         shell.dispose();
21         while (!shell.isDisposed()) {
22             if (!display.readAndDispatch())
23                 display.sleep();
24         }
25         display.dispose();
26     }
27 }
复制代码

 

程序说明:

setFilterExtensions设置文件选择的限制类型.

setFilterNames设置文件类型的说明文字,不要也可以.

setFilterExtensions参数的数组元素会和setFilterNames参数的数组元素依顺序相对应,像*.jpg类型本应该对 应setFilterNames中数组的第三个元素,但此数组只有两个元素,所以setFilterNames没有为*.jpg类型设置名称.则界面默认以类型*.jpg作为其名称.

4.保存对话框(SWT.SAVE式样)

保存对话框并不能提供实际保存文件的功能,它仅仅是弹出一个文件对话框,然后返回一个包含路径信息的字符串,具体文件的保存操作(指将文件信息写入磁盘)需要另外写程序去实现.保存对话框的实例如下:

FileDialog4.java

复制代码
 1 import org.eclipse.swt.SWT;
 2 import org.eclipse.swt.widgets.Display;
 3 import org.eclipse.swt.widgets.FileDialog;
 4 import org.eclipse.swt.widgets.Shell;
 5 
 6 public class FileDialog4 {
 7     public static void main(String[] args) {
 8         final Display display = Display.getDefault();
 9         final Shell shell = new Shell();
10         shell.setSize(327, 253);
11         // ---------创建窗口中的其他界面组件-------------
12         FileDialog dlg = new FileDialog(shell, SWT.SAVE);
13         String fileName = dlg.open();
14         if (fileName != null)
15             System.out.println(fileName);
16         // -----------------END------------------------
17         // shell.layout();
18         // shell.open();
19         shell.dispose();
20         while (!shell.isDisposed()) {
21             if (!display.readAndDispatch())
22                 display.sleep();
23         }
24         display.dispose();
25     }
26 }
复制代码

 


本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/4167598.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10095 0
关于安卓开发使用AlertDialog实现按钮对话框
AlertDialog 类的功能非常强大,它不仅可以生成带按钮的提示对话框,还可以生成带列表的对话框。 使用AlertDialog实现对话框建一个layout文件 alert.xml  添加一个按钮 命名为:显示带取消中立确定按钮的对话框建一个activity  AlertDialog_lianxi.
729 0
Wince 对话框程序设计
  如何编程实现wince下“打开文件夹对话框”呢?这里就要涉及到下面要分析的知识了,对话框是一种特殊的窗口,它在wince 作为应用程序和程序使用者之间的交流窗口,通过显示和获取信息使人们的交流更加方便,这里先介绍下wParam和lParam,对于鼠标而言,LOWORD(wParam)和HIWORD(wParam)代表鼠标位置x,y坐标;对于菜单和控件而言,两者wParam的低字节都是各自的ID,即LOWORD(wParam)都是ID。
801 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10886 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13893 0
删除时显示确认对话框
@Html.ActionLink("删除", "Delete", "AccType", new { id = item.Atid }, new { @onclick ="return confirm('您确定要删除该记录吗?该操作不可恢复!') "})  学习交流群:364976091
466 0
安卓开发_使用AlertDialog实现对话框
示例: 一、确定对话框 1 AlertDialog.Builder builder = new AlertDialog.Builder(this); 2 builder.
773 0
2010
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载