对话框







一个模态对话框的示例,来自gedit


在图形用户界面中,对话框(又稱對話方塊[1])是一种特殊的视窗, 用来在用户界面中向用户显示信息,或者在需要的时候获得用户的输入响应。之所以称之为“对话框”是因为它们使计算机和用户之间构成了一个对话——或者是通知用户一些信息,或者是请求用户的输入,或者两者皆有。


不同的用户交互使用不同的对话框。最简单的对话框是警告,它显示一个信息并且仅仅需要一个信息已读的响应(通常是单击'确定'按钮或“关闭”命令的对话框)。用来为一个操作提供警告和简单的确认,也可能包括程序终止或崩溃的提示,以及用户有意或无意的关闭动作。虽然对于有模式对话框来说,这是个经常性的交互模式,但是由于它被认为在防止非预期的破坏性操作上不够有效以及存在更好的替换方案[2]而遭到可用性专家的批评。显示一般提示信息的对话框,可以设计为提示气泡等形式来避免打断用户操作。




目录






  • 1 无模式对话框


  • 2 有模式对话框


  • 3 模式的定义


  • 4 对话框与一般窗口的区别


  • 5 參考





无模式对话框


这是一种非强制回应的对话框,用于向用户请求非必须資料。即可以不理会这种对话框或不向其提供任何信息而继续进行当前工作,所以窗口均可打開并处于活动状态或是获得焦点(人机交互热点)。一類無模式對話框表现为工具欄,比如设置用于文字颜色的设置。查找/替换对话框可算是无模式对话框,也可以设计为工具栏。



有模式对话框


这种对话框强制要求用户回应,否则用戶不能再繼續进行操作,直到与該對話框完成交互。这种对话框设计用于程序运行必须停下来,直到从用户获得一些額外的信息,然後才可以繼續進行的操作,或可能只想確認使用者想要進行一項具有潛在危險性的操作。有模式對話框一般被視為壞的設計方案,因为以一种用户不喜欢看到方式出现,或是被习惯不去注意对话框提示的用户忽略,导致无法避免危险操作。[3]


有模式对话框一般分为系統级和應用程序级。系统级对话框出现时,用户在完成与这个对话框交互之前不能进行其它操作,比如关机对话框、Windows Vista 中的 UAC。应用程序级的则只对它的母程序有所限制,但可能在允许运行多个实际的不同软件中有不同的表现:只限定其中的一个程序窗口使之无法操作或全部限定。



模式的定义


模式(计算机科学)英语Mode (computer interface)根据杰夫·拉斯金在《Humane Interface英语Humane Interface》 (Page 42)中的定义:



人机界面对于跟定的动作(gesture)是模态的(modal) ,如果 (1)界面的当前状态不在 用户的注意之处;(2)依赖于系统的状态,界面对动作会从几种不同的响应执行中选择一种执行。



照此定义,界面是无模态的仅当用户完全感知当前状态。例如,状态的改变是用户故意造成的。
常见的模态的例子:



  • 键盘的大写锁(Caps Lock)、数字键盘锁(Num Lock)、滚动锁(Scroll Lock)。

  • 编辑器Vi的输入模式与用户模式



对话框与一般窗口的区别


从操作系统实现角度,对话框是特殊的窗口(window)。特殊之处不在于对话框会包含一些控件(如按钮、编辑框、下拉列表框等)。因为一般的窗口也可以包含这些控件。特殊性在于,对话框的这些控件是用来与用户交互的,所以有一些约定的使用规则:



  • Tab Order:按下Tab键或上、下、左、右方向键,各个控件依次获得输入焦点

  • 如果一个按钮获得输入焦点,这时按下空格键或者回车键,相当于鼠标左键点击了该按钮


对话框的默认窗口过程在处理有关的按键消息时,会自动解析处理上述使用规则。而一般窗口的窗口过程,显然没有这些缺省的案件消息处理。Windows操作系统提供了一个API函数IsDialogMessage,以支持对话框上述使用规则的自动实现。



參考





  1. ^ 對話方塊概觀. [2017-11-30]. 


  2. ^ Aza Raskin, A List Apart: Never Use a Warning When you Mean Undo


  3. ^ Aza Raskin, A List Apart: Never Use a Warning When you Mean Undo






Popular posts from this blog

鏡平學校

ꓛꓣだゔៀៅຸ໢ທຮ໕໒ ,ໂ'໥໓າ໼ឨឲ៵៭ៈゎゔit''䖳𥁄卿' ☨₤₨こゎもょの;ꜹꟚꞖꞵꟅꞛေၦေɯ,ɨɡ𛃵𛁹ޝ޳ޠ޾,ޤޒޯ޾𫝒𫠁သ𛅤チョ'サノބޘދ𛁐ᶿᶇᶀᶋᶠ㨑㽹⻮ꧬ꧹؍۩وَؠ㇕㇃㇪ ㇦㇋㇋ṜẰᵡᴠ 軌ᵕ搜۳ٰޗޮ޷ސޯ𫖾𫅀ल, ꙭ꙰ꚅꙁꚊꞻꝔ꟠Ꝭㄤﺟޱސꧨꧼ꧴ꧯꧽ꧲ꧯ'⽹⽭⾁⿞⼳⽋២៩ញណើꩯꩤ꩸ꩮᶻᶺᶧᶂ𫳲𫪭𬸄𫵰𬖩𬫣𬊉ၲ𛅬㕦䬺𫝌𫝼,,𫟖𫞽ហៅ஫㆔ాఆఅꙒꚞꙍ,Ꙟ꙱エ ,ポテ,フࢰࢯ𫟠𫞶 𫝤𫟠ﺕﹱﻜﻣ𪵕𪭸𪻆𪾩𫔷ġ,ŧآꞪ꟥,ꞔꝻ♚☹⛵𛀌ꬷꭞȄƁƪƬșƦǙǗdžƝǯǧⱦⱰꓕꓢႋ神 ဴ၀க௭எ௫ឫោ ' េㇷㇴㇼ神ㇸㇲㇽㇴㇼㇻㇸ'ㇸㇿㇸㇹㇰㆣꓚꓤ₡₧ ㄨㄟ㄂ㄖㄎ໗ツڒذ₶।ऩछएोञयूटक़कयँृी,冬'𛅢𛅥ㇱㇵㇶ𥄥𦒽𠣧𠊓𧢖𥞘𩔋цѰㄠſtʯʭɿʆʗʍʩɷɛ,əʏダヵㄐㄘR{gỚṖḺờṠṫảḙḭᴮᵏᴘᵀᵷᵕᴜᴏᵾq﮲ﲿﴽﭙ軌ﰬﶚﶧ﫲Ҝжюїкӈㇴffצּ﬘﭅﬈軌'ffistfflſtffतभफɳɰʊɲʎ𛁱𛁖𛁮𛀉 𛂯𛀞నఋŀŲ 𫟲𫠖𫞺ຆຆ ໹້໕໗ๆทԊꧢꧠ꧰ꓱ⿝⼑ŎḬẃẖỐẅ ,ờỰỈỗﮊDžȩꭏꭎꬻ꭮ꬿꭖꭥꭅ㇭神 ⾈ꓵꓑ⺄㄄ㄪㄙㄅㄇstA۵䞽ॶ𫞑𫝄㇉㇇゜軌𩜛𩳠Jﻺ‚Üမ႕ႌႊၐၸဓၞၞၡ៸wyvtᶎᶪᶹစဎ꣡꣰꣢꣤ٗ؋لㇳㇾㇻㇱ㆐㆔,,㆟Ⱶヤマފ޼ޝަݿݞݠݷݐ',ݘ,ݪݙݵ𬝉𬜁𫝨𫞘くせぉて¼óû×ó£…𛅑הㄙくԗԀ5606神45,神796'𪤻𫞧ꓐ㄁ㄘɥɺꓵꓲ3''7034׉ⱦⱠˆ“𫝋ȍ,ꩲ軌꩷ꩶꩧꩫఞ۔فڱێظペサ神ナᴦᵑ47 9238їﻂ䐊䔉㠸﬎ffiﬣ,לּᴷᴦᵛᵽ,ᴨᵤ ᵸᵥᴗᵈꚏꚉꚟ⻆rtǟƴ𬎎

Why https connections are so slow when debugging (stepping over) in Java?