精华内容
下载资源
问答
  • 对话框

    2020-10-12 11:34:26
    在wxpthon中对话框都继承自wx.Dialog类。下面展示一下这些对话框。 一、对话框的创建和使用与Frame相似,不同的对话框表示一次信息交换的活动。当完成交换后,单击对话框的按钮将关闭该对话框对话框只是应用程序...

    对话框分为模态对话框、提示对话框、文本对话框、打开文件对话框等多种类型。在wxpthon中对话框都继承自wx.Dialog类。下面展示一下这些对话框。
    一、对话框的创建和使用与Frame相似,不同的对话框表示一次信息交换的活动。当完成交换后,单击对话框的按钮将关闭该对话框,对话框只是应用程序生命周期的一部分。

    #对话框的创建
    import wx
    
    #定义窗口类MyFrame,包含aboutMenu子菜单并单击创建MyDialog对话框
    class MyFrame(wx.Frame):
        def __init__(self):
            wx.Frame.__init__(self,None,-1,u'自定义对话框',size=(300,200))
            MenuHelp = wx.Menu()
            aboutMenu = MenuHelp.Append(-1,u'关于(&A)')
            menuBar = wx.MenuBar()
            menuBar.Append(MenuHelp,u'帮助(&H)')
            self.Bind(wx.EVT_TOOL,self.ShowAboutDlg,aboutMenu)
            self.SetMenuBar(menuBar)
    
    #定义showaboutdlg(),用该函数创建显示aboutmenu菜单
        def ShowAboutDlg(self,evt):
            pos = self.GetPosition()
    
    #创建对话框dialog,并显示MyFrame的相对位置
            dialog = MyDialog(self,-1,u'关于')
            dialog.SetPosition((pos[0] + 100,pos[1] + 60))
    
    #创建了MyDialog对话框类,继承自wx.Dialog,创建 确定 按钮打开对话框
    class MyDialog(wx.Dialog):
        def __init__(self,parent,id,title):
            wx.Dialog.__init__(self,parent,id,title,size=(100,100))
            self.panel = wx.Panel(self)
            self.OkBtn = wx.Button(self,10,u'确定',pos=(10,20),size=(80,30))
            self.Bind(wx.EVT_BUTTON,self.CloseDlg,self.OkBtn)
            self.Show() #调用show()显示对话框
    
        def CloseDlg(self,evt):
            self.Close()
    
    if __name__=='__main__':
        app = wx.PySimpleApp()
        MyFrame().Show()
        app.MainLoop()
    
    #由于模态对话框的约束性,因此模态对话框通常作为获取数据的窗口。
    #只有从模态对话框中返回数据后,才能关闭对话框
    

    二、提示对话框有助于用户体验的完善,例如,退出应用程序时显示退出提示,删除数据时显示删除提示。

    #提示对话框:通常用于帮助用户进行交互式操作
    import wx
    class MyFrame(wx.Frame):
        def __init__(self):
            wx.Frame.__init__(self,None,-1,u'对话框',size=(300,200))
            button = wx.Button(self,wx.ID_OK,u'退出',pos=(10,10))
            button.SetDefault()
            self.Bind(wx.EVT_BUTTON,self.OnClick,button)
        #创建对话框,根据wx.YES_NO,生成“是”、“否”按钮
        def OnClick(self,evt):
            #使用MessageDialog()类创建选择对话框
            dlg = wx.MessageDialog(None,u'是否退出?',u'退出',wx.YES_NO|wx.ICON_QUESTION)
            #判断用户选择的返回值
            if(dlg.ShowModal() == wx.ID_YES):
                frame.Close()   #关闭主程序
            #调用释放对话框对象
            dlg.Destroy()
    
    if __name__=='__main__':
        app = wx.PySimpleApp()
        frame = MyFrame()
        frame.Show()
        app.MainLoop()
    

    三、文本输入对话框:用于返回输入字符串的值,通常由一个静态文本框、一个输入文本框和OK、Cancel按钮组成,可由wx.TextEnTryDialog类创建。

    import wx
    class MyFrame(wx.Frame):
        def __init__(self):
            wx.Frame.__init__(self,None,-1,"TextEntryDialog",size=(300,200))
            panel = wx.Panel(self,-1)
    
            #创建TextCtrl实例textCtrl,并用wx.TE_PROCESS_ENTER处理回车事件
            self.textCtrl = wx.TextCtrl(panel,-1," ",pos=(10,10),style=wx.TE_PROCESS_ENTER)
            self.textCtrl.Bind(wx.EVT_TEXT_ENTER,self.OnClick,self.textCtrl)
    
        def OnClick(self,evt):
            #创建文本对话框,包含“ok”和“cancel”按钮
            self.dialog = wx.TextEntryDialog(None,u'输入文本',u'文本对话框',"",style=wx.OK|wx.CANCEL)
            #当按下OK按钮时
            if self.dialog.ShowModal() == wx.ID_OK:
                #获取文本输入内容,调用SetLabel把文本填入textCtrl控件的文本框
                self.textCtrl.SetLabel(self.dialog.GetValue())
    if __name__=='__main__':
        app = wx.PySimpleApp()
        MyFrame().Show()
        app.MainLoop()
    #创建1个TextCtrl控件,当按下回车键后,将显示TextEntryDialog对话框
    #用户输入文本后,单击“OK”按钮将把输入的值返回给TextCtrl控件
    

    四、特殊对话框:包括打开文本对话框、字体对话框、颜色选择对话框。打开文件对话框由wx.FileDialog类创建。

    #演示“打开”文件对话框的创建和使用方法
    import wx
    import os
    
    #创建打开文件对话框,显示当前目录中的文件,并可对类型进行过滤
    def ShowFileDialog():
    #文件类型的下拉列表提供“py”为后缀的文件和所有文件两种类型
        filterFile = "Python source(*.py)|*.py|All files(*.*)|*.*"  #过滤文件
        #对话框dialog。os.getcwd()获取当前文件所在的路径
        dialog = wx.FileDialog(None,u'选择文件',os.getcwd(),"",filterFile,wx.ART_FILE_OPEN)
        #以模式对话框的形式显示dialog对象
        dialog.ShowModal()
        dialog.Destroy()
    
    if __name__=='__main__':
        app = wx.PySimpleApp()
        ShowFileDialog()
        app.MainLoop()
    

    五、窗口与对话框的交互,对话框中的组件支持验证能力,而窗口不支持组件内容的验证。wx.PyValidator类的TransferWindow()和TransfromWindow()这两个方法实现窗口和对话框的交互。前者方法用于对话框打开时执行,后者方法用于对话框关闭的调用,可以实现窗口与对话框的数据交换。

    #创建Frame窗口,该窗口用于计算两个数字的和
    import wx
    class MyFrame(wx.Frame):
        def __init__(self):
            wx.Frame.__init__(self,None,-1,u"对话框的验证",size=(300,200))
            panel = wx.Panel(self,-1)
            sizer = wx.BoxSizer(wx.HORIZONTAL)
            self.addTextCtrl = wx.TextCtrl(panel,-1,"",pos=(10,10))
            addStaticText = wx.StaticText(panel,-1,"+")
            self.addTextCtrl2 = wx.TextCtrl(panel,-1,"")
            btn = wx.Button(panel,-1,u'计算')
            btn.Bind(wx.EVT_BUTTON,self.OnClick,btn)
            sizer.Add(self.addTextCtrl)
            sizer.Add(addStaticText)
            sizer.Add(self.addTextCtrl2)
            sizer.Add(btn)
            panel.SetSizer(sizer)
            panel.Fit()
        def OnClick(self,event):
        #定义字典data,把两个文本框中的数字存放到字典中
            data = {0:self.addTextCtrl.GetValue(),1:self.addTextCtrl2.GetValue()}
            dlg = MyDialog(data)
            dlg.ShowModal()
            dlg.Destroy()
    

    演示设计执行计算的对话框类,该对话框接收窗口定义的字典数据,然后进行计算。

    #演示设计执行计算的对话框类
    class MyDialog(wx.Dialog):
        def __init__(self,data):
            wx.Dialog.__init__(self,None,-1,u'验证器')
            addStaticText = wx.StaticText(self,-1,u'数字1:')
            addStaticText2 = wx.StaticText(self,-1,u'数字2:')
            self.addTextCtrl = wx.TextCtrl(self,validator = DataValidator(data,0))
            self.addTextCtrl2 = wx.TextCtrl(self,validator = DataValidator(data,1))
            btn = wx.Button(self,wx.ID_OK,u'确定')
            btn.Bind(wx.EVT_BUTTON,self.OnClick,btn)
            btn.SetDefault()
            sizer = wx.BoxSizer(wx.VERTICAL)
            gridSizer = wx.FlexGridSizer(2,2,5,5)
            gridSizer.Add(addStaticText,0,wx.ALIGN_LEFT)
            gridSizer.Add(self.addTextCtrl,0,wx.EXPAND)
            gridSizer.Add(addStaticText2,0,wx.ALIGN_LEFT)
            gridSizer.Add(self.addTextCtrl2,0,wx.EXPAND)
            sizer.Add(gridSizer,0,wx.EXPAND|wx.ALL,5)
            sizer.Add(btn,0,5)
            self.SetSize(sizer)
            sizer.Fit(self)
        def OnClick(self,evt):
            result = float(self.addTextCtrl.GetValue()) + float(self.addTextCtrl2.GetValue())
            wx.MessageBox(str(result),u'结果')
            self.Close()
    

    用DataValidator类实现创建数据的接收。

    class DataValidator(wx.PyValidator):
    #定义构造函数,用于接收data字典和相应的索引
        def __init__(self,data,key):
            wx.PyValidator.__init__(self)
            self.data = data
            self.key = key
         #覆盖close()方法,返回验证器的拷贝
        def Clone(self):    #close()方法必须实现
            return DataValidator(self.data,self.key)
        def Validata(self,w):   #验证数据
            return True
        def TransferToWindow(self): #对话框打开时调用
            textCtrl = self.GetWindow()	#获得当前组件
            #通过索引key查找当前组件的值,即把窗口文本框的内容传递给对话框的文本框
            textCtrl.SetValue(self.data.get(self.key,""))
            return True
        def TransferFromWindow(self): #对话框关闭时调用
            return True
    

    在DataValidator类的validata()方法实现对组件数据的验证,有兴趣者可以自己编写一些相关的验证规则来丰富对话框的验证功能。

    (好久没来写笔记了,希望大家勤快点哦)

    展开全文
  • 对话框组成和操作对话框在WindowsXP占有重要地位,它是用户与计算机系统之间进行信息交流的桥梁。对话框不能像窗口那样任意地改变大小,在标题栏上也没有最小化、最大化按钮,取而代之的是帮助按钮。2.4.1 ...

    【小编“百花争妍”】东奥会计在线高级会计师频道提供:2017年高级职称计算机预习:对话框的组成和操作。

    对话框的组成和操作

    对话框在Windows

    XP中占有重要地位,它是用户与计算机系统之间进行信息交流的桥梁。对话框不能像窗口那样任意地改变大小,在标题栏上也没有最小化、最大化按钮,取而代之的是帮助按钮。

    2.4.1 对话框的组成和基本操作

    Windows

    XP中的对话框用于向程序提供信息。对话框通常具有多个选项和元素。例如下拉列表框、命令按钮、单选按钮、复选框和文本框等。如图所示显示了一个典型的对话框。

    1.标题栏

    2.命令按钮

    3.文本框

    4.列表框

    5.下拉式菜单

    6.单选按钮

    7.复选框

    8.数字增减框

    9.滑动杆

    10.选项卡

    包含信息较多的对话框可以由多个选项卡组成,每个选项卡对应一个主题信息,且含有不同的选项组。以下操作可以实现不同选项卡之间的切换:

    ◆直接单击选项卡标题,以切换选项卡;

    ◆单击选项卡标题,当标题名周围出现虚框线时,使用键盘上得左、右方向键可以在各个选项卡之间进行切换;

    ◆利用Ctrl+Tab组合键可以从左到右依次切换各个选项卡,而利用Ctrl+Shift+Tab组合键则可以反向顺序依次切换。

    2.4.2 确认、提醒或警告对话框

    确认、提醒或警告对话框在系统需要确认、提醒或警告时才会出现。确认对话框提示用户确认是否执行某一操作,提醒对话框用来传递系统提示信息,警告对话框提示用户执行相应操作可能带来的后果。

    (本文内容版权归东奥会计在线所有 转载请注明出处)

    相关链接:

    展开全文
  • 首先观察Filter属性的组成部分:“Word文件|*.doc”,前面的“Word文件”成为标签,是一个可读的字符串,可以自定定义,“|*.doc”是筛选器,表示筛选文件夹后缀名为.doc的文件,“*”表示匹配Word文件名称的字符串...

    OpenFileDialog对话框的Filter属性说明:

             首先观察Filter属性的组成部分:“Word文件|*.doc ”,前面的“Word文件”成为标签,是一个可读的字符串,可以自定定义,“|*.doc”是筛选器,表示筛选文件夹中后缀名为.doc的文件,“*”表示匹配Word文件名称的字符串。

             OK,下面说说我们经常要用到的几种情况:

    1.  Filter是null或Empty,表示显示所有文件,并总会显示文件夹

    2. 需要筛选特定的文件,设置Filter属性为“标签|*.后缀”,按照这个格式设置,标签可以自定义,是字符串即可,后缀表示你需要筛选的文件后缀,例如“.txt、.doc”等

    3. 需要筛选多种文件,比方说需要筛选图片文件,但是图片文件的后缀有几种,例如jpg、png、gif等,当需要同时筛选这些文件,设置Filter属性为“标签|*.jpg;*.png;*.gif”,注意:只是在筛选器中多添加了几个后缀,不同后缀之间使用分号隔开

    4. 当需要筛选多种文件,但是不同时将它们全部列出来,只有用户分别通过下拉列表选择需要的文件类型时,才进行筛选。这种情况下只需要多设置几个筛选器即可,filter属性设置如下:“标签1|*.jpg|标签2|.png|标签3|.gif”。注意:不同的筛选器之间使用“|”分隔即可。


     

    Filter属性类似与正则表达式,试用*表示匹配文件名的字符,使用“.后缀”匹配文件的后缀名,通过连接后缀(试用;号将需要的后缀分开)表示同时筛选所有的符合后缀的文件,通过“|”连接不同的筛选器表示通过用户选择后缀名称来进行文件筛选.

    比如你要筛选word文件,后缀为".doc",如果筛选出的.doc类型的word文件较多,使用正则表达式能很快找到你想要的word文件

     

    1 OpenFD.Filter ="word|*.docx";
    2 
    3 OpenFD.Filter ="word|*开题报告*.docx";

    第1行中  |   后的   *.docx  表示匹配全部的以  .docx结尾的文件,

    第3行中  |   后的   *开题报告*.docx  表示匹配文件名称中包含 “ 开题报告”的并且以  .docx  结尾的文件

     

     

     

     

    展开全文
  • 对话框是软件系统最常用到的界面,对话框无处不在,从界面结构来说,对话框主要是由主体的界面组件和底部窗体按钮组成. 之前的例子已经频繁的使用到了MessageDialog.openInformation方法来弹出一个简单的对话框....

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

    之前的例子中已经频繁的使用到了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,如需转载请自行联系原作者

    展开全文
  • android对话框

    千次阅读 2016-07-14 13:41:42
    android对话框
  • 在C#,MessageBox消息对话框位于System.Windows.Forms命名空间,一般情况,一个消息对话框包含信息提示文字内容、消息对话框的标题文字、用户响应的按钮及信息图标等内容。C#允许开发人员根据自己的需要设置...
  • symbian对话框

    2010-08-04 14:55:00
    <br />Symbian对话框   Symbian OS的对话框首先需要在资源文件定义(对话框所容纳的控件也需要在资源文件定义),然后在程序建立对话框对象并使用资源文件对话框id进行初始化,最后执行...
  • MFC 对话框

    千次阅读 2013-10-30 15:15:47
    MFC 对话框 1、对话框基本要点和生命周期 MFC对话框支持“所见即所得”编程模式。其类型分为模式对话框和非模式对话框对话框由一个rc资源文件描述外观,通过ID与一个CPP类相连接,对话框内的控件使用...
  • 常用对话框:文件对话框

    千次阅读 2014-12-09 13:59:38
     文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统经常见到这两种文件对话框。例如,很多编辑软件像记事本等都有“打开”选项,选择“打开”后会弹出一个对话框,让我们选择要打开文件的...
  • MFC颜色选择对话框的使用

    千次阅读 2013-09-30 17:30:11
    类CColorDialog支持在应用使用颜色选择对话框。CColorDialog对象是一个拥有一个颜色列表的对话框。用户可以在列表选择一种颜色,也可以定制颜色,在退出该对话框时,向应用告知选中的颜色。 一、构造方法:  ...
  • 对话框通知用户有关特定任务的信息,可能包含关键信息,需要做出决定或涉及多个任务。 现在您已经了解了对话框的用途,现在该学习如何显示对话框了。 在本教程,我将指导您完成在Android显示各种材料设计...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,586
精华内容 25,434
关键字:

对话框的组成中不包括