别再瞎用了!SWT对话框和Window的区别,一个决定成败的细节
为了把SWT里org..jface..与org..jface..之间的差异给讲个明白, 同时去引导开发者于不同情形之下挑选恰当的使用办法, 特地给出了一个没啥预定义内容的基础窗口框架。它是继承自某类的, 专门被用来搭建对话框, 默认拥有“确定”按钮以及“取消”按钮, 而且默认属于应用程序模态, 这就说明在对话框敞开期间, 别的窗口会被堵住。基础窗口框架org..jface..类给出了一个最为基础的窗口架构, 它仅仅负责生成与管理一个窗口, 并不涵盖任何预先定义的用户界面元素或者行为, 你能够将它视作是一块空白的画布, 你需要亲自增添全部的控件以及逻辑。使用场景对话框org.jface类, 其继承自特定类, 此特定类未明确指出, 专门是用在创建对话框方面的。它有着一些在默认状况下的UI元素以及行为, 就比如说:使用场景模态与非模态默认呈现为应用程序模态的情形, 这一状况所指向的是, 当对话框处于打开状态之时, 用户没有办法与应用程序的其余部分展开交互, 直至对话框被关闭为止。默认又属于非模态的特征, 这使得用户在窗口开启之际能够与应用程序的其他部分进行交互。堆友AI堆友AI网页版, 有在线使用入口, 它支持多风格AI绘画, 支持视频生成, 支持AI商品图, 支持创意融合, 还支持设计创作等场景。下载你能够借助设置 () 方式去更改窗口的模态性。举例而言, 你能够运用SWT. 样式来打造一个非模态的对话框。定制对话框例如, 你能重写, 用于处理“确定”按钮点击事件的, 某方法, 和, 用于“取消”按钮点击事件的, 某方法。你还能够重写, 用于添加自定义UI元素的, 某方法。类提供众多定制对话框行为的方法。import org.eclipse.jface.dialogs.Dialog; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.SWT; public class MyDialog extends Dialog { public MyDialog(Shell parentShell) { super(parentShell); } Override protected Control createDialogArea(Composite parent) { Composite container (Composite) super.createDialogArea(parent); Label label new Label(container, SWT.NONE); label.setText(这是我的自定义对话框); return container; } Override protected void okPressed() { System.out.println(用户点击了确定按钮); super.okPressed(); } Override protected void cancelPressed() { System.out.println(用户点击了取消按钮); super.cancelPressed(); } }在这个事例里面, 我们构建了一个称作 的自定对话框。我们重新编写了 () 方法用以增添一个标签, 还重新编写了 () 以及 () 方法用来应对按钮的点击状况。总结是选择其中之一, 还是取决于你的具体需求, 若是你需要具备一个简单的窗口框架而且要能够实现完全自定义窗口的内容以及行为那种情况, 那么此为一个不错的选择, 要是你需要创建一个对话框, 同时还非得需要具备一些默认的UI元素和其行为, 那么这是更好的选择, 要记住, 你能够凭借定制类来达成你的特定需求。