在SWT 3.3中弹出的对话框比如确认对话框,可以通过Tab键在对话框按钮之间来回选择,但是无法通过键盘方向键来选择,这就让Windows的爱好者很不习惯,其实我自己使用起来也不习惯。 <!--endfragment--> 其实让SWT的对话框支持方向键选择有好几种方案
A方案:将平台迁移到Eclipse 3.4+,这个方法在SWT 3.4+中解决了
B方案:可以自己实现这个功能!
我们可以继承 org.eclipse.jface.dialogs.MessageDialog 这个类,比如就叫MessageDialog2,然后重写父类中的 createButtonsForButtonBar(Composite parent) 方法,比如可以参考我的实现方法:
protected void createButtonsForButtonBar(Composite parent) {
super.createButtonsForButtonBar(parent);
int columns = ((GridLayout) parent.getLayout()).numColumns;
if(columns < 2)
return;
for (int i = 0; i < columns; i++) {
Button button = getButton(i);
int index = (i + 1 < columns ? i + 1 : i-1);
final Button otherButton = getButton(index);
button.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.keyCode == SWT.ARROW_RIGHT || e.keyCode == SWT.ARROW_LEFT) {
otherButton.setFocus();
}
}
});
}
}
然后在MessageDialog2方法重写 openQuestion(Shell parent, String title, String message) 方法,
参考实现:
public static boolean openQuestion(Shell parent, String title, String message, boolean defaultTrue) {
MessageDialog2 dialog = new MessageDialog2(UIUtil.getActiveShell(), title, null, message, QUESTION, new String[] {
IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL }, defaultTrue ? 0 : 1);
return dialog.open() == 0;
}
<!--endfragment-->
上面方法的defaultTrue是指焦点是否默认在"确认"按钮上面。
<!--endfragment--><!--endfragment--><!--endfragment--><!--endfragment-->
使用方法:
<!--endfragment-->
MessageDialog2.openQuestion(getShell(),”确认操作”,”是否要执行XX操作?”,false);
<!--endfragment-->
默认焦点为”否”按钮上,当然,你也可以使用键盘方向键选择"是"按钮
分享到:
相关推荐
SWT(Standard Widget Toolkit)是Java编程中用于创建图形用户界面(GUI)的一种库,它为开发者提供了丰富的控件和对话框。在SWT中,`MessageBox`是一个用于显示简单的消息对话框的类,通常用来向用户显示警告、确认...
| 方向键下 | SWT.ARROW_DOWN | | 方向键上 | SWT.ARROW_UP | | 方向键左 | SWT.ARROW_LEFT | | 方向键右 | SWT.ARROW_RIGHT | | Alt键 | SWT.ALT | | 空格键 | SWT.SPACE | *注:原文中的SWT.BS应为SWT.SPACE* | ...
它提供了丰富的组件和API,让开发者能够构建功能强大的跨平台应用。本教程主要讲解如何在Java中使用SWT实现折叠菜单的功能。 折叠菜单是一种节省屏幕空间并提供层次化导航的UI设计,它允许用户展开或折叠子菜单来...
JFace 的核心价值在于它提供了一系列的工具类和控件,这些工具类和控件可以帮助开发者快速构建常见的 UI 元素,如对话框、表格、树形结构等,大大减少了代码量和开发时间。 #### 创建JFace应用的基本步骤 1. **...
开发人员需要根据目标操作系统的版本和架构选择相应的SWT jar包,因为每个jar包都是为特定环境定制的。 "Browser"标签则明确指出了SWT的核心功能之一——浏览器功能,这是通过`org.eclipse.swt.browser.Browser`类...
在这个项目"黑客帝国炫酷动态背景登录对话框"中,开发者利用Eclipse SWT和JFace的技术,创造了一个独特的登录对话框。对话框的背景不再是静态的,而是动态的黑客帝国风格的字符雨效果,这种效果通常由快速下落的绿色...
此 repo 包含用于 Python 3 的 libccv 的 SWT 算法的包装器。它与 Linux、macOS 和 Docker 兼容。 有关更多信息,请参阅我的博文:http: 用法 from swt_python3 import swt buffer = open ( "input.jpg" , "rb" )...
org.eclipse.swt.SWT.class org.eclipse.swt.SWTError.class org.eclipse.swt.SWTException.class org.eclipse.swt.accessibility.ACC.class org.eclipse.swt.accessibility.Accessible.class org.eclipse.swt....
通过以上步骤,我们成功地在SWT开发中实现了一个小巧的日历对话框,并将其与文本框结合使用,从而让用户可以轻松选择并输入日期。这种方法不仅提高了应用程序的可用性,还增强了用户的交互体验。在实际应用中,还...
主要讲述了Jface向导式对话框的编写及代码。能够正确的运行在Eclipse中,希望能帮有所帮助
- **ColorDialog、FontDialog等对话框组件**:用于创建颜色选择器、字体选择器等对话框。 - **FileDialog控件**:用于打开文件选择对话框。 - **PrintDialog控件**:用于打开打印设置对话框。 - **CCombo组件**:一...
4. **对话框**:SWT提供了诸如消息对话框(MessageDialog)、输入对话框(InputDialog)和文件选择对话框(FileDialog)等,学习如何创建和使用这些对话框,可以增强应用的交互性。 5. **拖放操作**:SWT支持拖放...
根据提供的文件信息,可以看出本文主要讨论的是如何在 SWT (Standard Widget Toolkit) 的 Table 控件中实现文本换行的功能。SWT 是一个用于开发基于 Java 的桌面应用程序的工具包,它提供了丰富的用户界面组件来帮助...
swt、jface对话框
SWT库包括一系列基本组件,如按钮、文本框、列表视图等,以及更复杂的元素,如树视图、表格和对话框。 2. SWT与JFace的关系: JFace是建立在SWT之上的抽象层,它简化了SWT的使用,通过提供更多的高级API和模型视图...
5. **对话框**:展示如何创建和使用各种对话框,如消息对话框(MessageDialog)、文件选择对话框(FileDialog)等。 6. **复合组件**:介绍如何组合多个SWT组件创建自定义的复合组件。 7. **SWT与JFace**:JFace是...
SWT 选择对话框 该项目为 SWT 实现了一个对话框,用户可以在其中选择多个选项之一。 它的灵感来自于提供的 DialogBox。 与其实现相反,该项目提供的对话框使用各自平台的本机小部件,并且支持键盘交互。 例子 此基本...
第4章 使用基本控件与对话框.pdf 第4章 使用基本控件与对话框.pdf eclipse插件开发笔记,使用基本控件与对话框
JFace是建立在SWT之上的一层抽象,简化了UI开发的复杂性,提供了更高级的数据绑定、对话框和视图管理功能。JFace可以和SWT一起使用,为开发者提供更加便利的编程接口。 5. SWT与Eclipse RCP: SWT是Eclipse Rich ...
JFace是建立在SWT之上的抽象层,它简化了GUI开发,提供了数据绑定、视图模型、对话框等功能。JFace的目的是使代码更简洁,减少重复工作,提升可读性和可维护性。在本教程中,JFace与SWT一起被提及,意味着我们不仅会...