首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在GWT中单击ESCAPE(ESC)时关闭Dialogbox

在GWT中,当用户单击ESC键时关闭DialogBox是一种常见的交互行为。DialogBox是GWT中用于显示模态对话框的组件,它可以包含各种内容,如表单、消息、警告等。

要实现在GWT中单击ESC键关闭DialogBox,可以通过以下步骤进行操作:

  1. 创建一个自定义的DialogBox类,并继承自com.google.gwt.user.client.ui.DialogBox。
  2. 在该自定义类中,重写onPreviewNativeEvent方法。该方法用于处理原生事件。
  3. 在onPreviewNativeEvent方法中,判断是否按下了ESC键。可以通过NativeEvent.getKeyCode()方法获取按下的键码,ESC键的键码为27。
  4. 如果按下了ESC键,则调用DialogBox的hide()方法关闭对话框。

下面是一个示例代码:

代码语言:java
复制
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.logical.shared.CloseEvent;
import com.google.gwt.event.logical.shared.CloseHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.Event.NativePreviewEvent;
import com.google.gwt.user.client.Event.NativePreviewHandler;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.RootPanel;

public class CustomDialogBox extends DialogBox {

  public CustomDialogBox() {
    // 设置对话框的标题和内容
    setText("Custom DialogBox");
    setWidget(new HTML("This is a custom DialogBox."));

    // 添加ESC键关闭事件处理器
    addCloseHandler(new CloseHandler<PopupPanel>() {
      @Override
      public void onClose(CloseEvent<PopupPanel> event) {
        // 在对话框关闭时移除ESC键事件处理器
        removeEscapeKeyHandler();
      }
    });
  }

  @Override
  protected void onPreviewNativeEvent(NativePreviewEvent event) {
    super.onPreviewNativeEvent(event);

    // 判断是否按下了ESC键
    if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ESCAPE) {
      // 关闭对话框
      hide();
    }
  }

  // 添加ESC键事件处理器
  private HandlerRegistration escapeKeyHandler;

  private void addEscapeKeyHandler() {
    escapeKeyHandler = RootPanel.get().addNativePreviewHandler(new NativePreviewHandler() {
      @Override
      public void onPreviewNativeEvent(NativePreviewEvent event) {
        if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ESCAPE) {
          // 关闭对话框
          hide();
        }
      }
    });
  }

  // 移除ESC键事件处理器
  private void removeEscapeKeyHandler() {
    if (escapeKeyHandler != null) {
      escapeKeyHandler.removeHandler();
      escapeKeyHandler = null;
    }
  }
}

在上述示例代码中,我们创建了一个CustomDialogBox类,继承自DialogBox,并重写了onPreviewNativeEvent方法来处理ESC键事件。在构造函数中,我们设置了对话框的标题和内容,并添加了一个CloseHandler来在对话框关闭时移除ESC键事件处理器。同时,我们还定义了addEscapeKeyHandler和removeEscapeKeyHandler方法来添加和移除ESC键事件处理器。

使用该CustomDialogBox类,可以在需要的地方创建一个实例,并调用show()方法显示对话框。当用户单击ESC键时,对话框会自动关闭。

这是一个基本的实现方法,可以根据具体需求进行调整和扩展。在实际开发中,可以根据自己的项目需求选择合适的对话框组件和事件处理方式。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

GWT 初体验

集成 JAVA IDE 的优秀的跟踪查错功能可以让任何人钟情于 GWT。... JSNI 声明一个本地方法,使用 Java 的标准 native 关键字,而本地 JavaScript 代码用一种特殊的注释格式直接嵌入到 Java 源代码: public static native...其实,这涉及到另一种实现形式, GWT 是用来兼容 IE 低版本用的(IE6、IE7 和 IE8 的 compat 模式),它们对 HTML5 的 onhashchange 方法支持不好,所以这个东西相当于一个... GWT 1.X ,表现层代码和逻辑代码是搅合在一起的。引入 UI Binder 之后,这个问题应该解决了。但是学习一门新的 XML 语言也是让人不爽的。...UI Binder 可以看作是 GWT 发展的过程向传统 Web 开发方式的兼容和妥协,官方文档上面就说“makes it easier to collaborate with UI designers

1.1K10

问与答119:如何使用文件浏览按钮插入文件路径到单元格

如下图1所示,单元格C3包含完整的文件路径和名称,其右侧是一个文件夹图标按钮。 ? 图1 单击该文件夹图标,打开文件打开对话框,如下图2所示,可以从中选取一个文件并单击“打开”按钮。 ?...图2 此时,单元格C3将输入新的文件路径和文件名,如下图3所示。 ? 图3 A:下面是实现方法。 首先,对包含文件路径和文件名的单元格定义名称。这虽然不是必需的,但能够减小出错风险。...接着,VBE编辑器,插入一个标准模块,输入下面的代码: Sub selectFile() '创建并设置对话框作为变量 Dim dialogBox As FileDialog Set...单击功能区“插入”选项卡“插图”组的“图标”按钮,弹出的“插入图标”对话框搜索“文件夹”,然后选择文件夹图标,如下图4所示。 ? 图4 文件夹图标插入到工作表后,调整其位置、大小和颜色。...选择该图表,单击右键,快捷菜单中选择“指定宏”命令,“指定宏”对话框中选择selectFile过程。 完成! 注:本文整理自exceloffthegrid.com,供有兴趣的朋友参考。

1.7K30
  • jbpm5.1介绍(12)

    例如,构建用户界面,你将能够包括从包com.google.gwt.user.client.ui的类型和资源,因为它是GWT的核心功能的一部分,包含在GWT模块com.google gwt.user.User...API参考PEEK,单击下面的链接表。...光标焦点移动到输入框 最后,移动光标焦点的输入框,StockWatcher负载,用户可以开始增加库存。 onModuleLoad方法,取代TODO注释突出显示的代码。...单击“添加”按钮 或按返回输入框。 验证输入。 请检查如果股票已经存在。 添加一个新行。 创建一个删除按钮。 用户删除从表的股票。按下删除“按钮。 从表删除行。...一个时间戳显示上次刷新发生。 ? 虽然你没有编译StockWatcher,你可以在这里测试Web模式下:运行StockWatcher 一个Bug 为了本教程,我们引入的代码错误。

    6.9K40

    PyGame:Python 游戏编程入门-1

    在这种情况下,唯一处理的事件是pygame.QUIT,当用户单击窗口关闭按钮发生。 第 20 行用纯色填充窗口。screen.fill()接受指定颜色的 RGB 值的列表或元组。...如果你现在运行这个程序,那么你会看到一个窗口短暂地弹出,然后程序退出立即消失。不要眨眼,否则您可能会错过!在下一节,您将专注于主游戏循环,以确保您的程序仅在给出正确输入时才退出。...您的设计,有两个条件可以结束游戏循环: 玩家与障碍物相撞。(稍后您将介绍碰撞检测。) 播放器关闭窗口。 游戏循环所做的第一件事是处理用户输入以允许玩家屏幕上移动。...此事件仅在用户单击窗口关闭按钮发生。用户还可以使用任何其他操作系统动作来关闭窗口。...当您将这些行添加到前面的代码并运行它,您会看到一个带有空白或黑屏的窗口: 您按下该键之前,该窗口不会消失Esc,或者QUIT通过关闭窗口来触发事件。

    2K40

    一分钟开始持续集成之旅系列之:Java + GWT

    安装 JDK GWT 要求 JDK 1.6 或以上版本, console 执行命令 java -version 检查是否已安装,输出如下图类似内容,即表示已安装。...写作本文GWT 最新稳定版本是 2.8.2。...,如 HTML 页面、CSS 样式或图像 src/main/webapp 客户端代码 实现应用程序业务逻辑的 Java 代码,GWT 编译器将其转换为 JavaScript,最终浏览器运行 src/...[create-gwt-config] 选择上面创建的 GWT 运行配置,单击运行,IDEA 会自动打开浏览器,运行应用。...[artifact-generic] 总结 本次教程,我们创建了简单的 GWT 应用,熟悉了 GWT 项目结构及其命令行工具的使用,并且借助 CODING 平台提供的持续集成能力实现了应用的自动构建

    1.3K31

    插槽的应用

    需求2:弹窗打开后,点击旁边的非弹窗组件都能关闭; 思路:这里用到的是插槽,打开弹窗后点击非弹窗的周边的时候,用一个方法去接收这个参数,将它返回。..." > //showDetail 是弹窗的状态 //弹窗关闭绑定一个方法 <div v-if="!...//这里有一个巧妙的地方就是:里面依次循环的图片宽高是不同的,给图片绑定一个类名,<em>在</em>js<em>中</em>做成一个数组依次读取它的样式。...<em>DialogBox</em>.vue里面用了插槽,<em>在</em>它的外层容器(即非弹窗区)绑定了一个方法@click=“close”,并且<em>在</em>它的子元素阻止它冒泡,而在Footer.vue是 @close=“closeDialogBox...<em>在</em>弹出框组件<em>DialogBox</em>.vue写方法close () { this.$emit(‘close’); } $em

    12210

    如何在Python 3安装pygame并创建用于开发游戏的模板

    导入pygame 为了熟悉pygame,让我们创建一个名为our_game.py的文件,我们可以使用nano文本编辑器创建,例如: nano our_game.py pygame开始项目,您将从用...函数,我们将传递显示分辨率的参数,该参数是一对表示元组宽度和高度的数字。...动画通常是随着时间的推移不同帧之间的变化。考虑动画,您可能会想到一本翻书,因为它们包含一系列从一页到下一页逐渐变化的图像。当页面内容看起来处于运动状态,这些页面可以快速翻动模拟运动。...由于用户控制游戏功能和事件,我们还应该知道,当用户通过单击游戏窗口上角的“X”来请求关闭程序时,pygame.QUIT 会将其发送到事件队列。...为了我们的目的,让我们说Q密钥(如“退出”)或ESC密钥可以退出程序。

    21.8K21

    IDEA-从 Windows 过度到 Mac 必备快捷键对照表

    Up(Fn+↑) ⇟ == Page Down(Fn+↓) Home == Fn + ← End == Fn + → ⇥ == 右制表符(Tab键) ⇤ == 左制表符(Shift+Tab) ⎋ == Escape...+ 右方向键 光标跳转到当前单词 / 中文句的右侧开头位置 Ctrl + 前方向键 预设没有该快捷键 等效于鼠标滚轮向前效果 Ctrl + 后方向键 预设没有该快捷键 等效于鼠标滚轮向后效果 Alt...光标所在行下空出一行,光标定位到新行位置 Shift + 左键单击 Shift + 左键单击 在打开的文件名上按此快捷键,可以关闭当前打开文件 Ctrl + Alt Win 快捷键 Mac 快捷键 介绍...Command + Shift + 左键单击 把光标放在某个类变量上,按此快捷键可以直接定位到该类 Ctrl + Shift + 左方向键 Option + Shift + 左方向键 代码文件上,...ESC 从工具窗口进入代码文件窗口

    5.8K51

    从 Windows 过度到 Mac 必备快捷键对照表

    ⇞ Fn + ↑ = Page Up ⇟ Fn + ↓ = Page Down Home Fn + ← End Fn + → ⇥ Tab = 右制表符 ⇤ Shift + Tab = 左制表符 ⎋ Esc...= Escape ⏏ 电源开关键 Alt Win 快捷键 Mac 快捷键 介绍 Alt + ` Control + V 显示版本控制常用操作菜单弹出层 Alt + F1 Option + F1 显示当前文件选择目标弹出层...+ 右方向键 光标跳转到当前单词 / 中文句的右侧开头位置 Ctrl + 前方向键 预设没有该快捷键 等效于鼠标滚轮向前效果 Ctrl + 后方向键 预设没有该快捷键 等效于鼠标滚轮向后效果 Shift...光标所在行下空出一行,光标定位到新行位置 Shift + 左键单击 Shift + 左键单击 在打开的文件名上按此快捷键,可以关闭当前打开文件 Alt + Shift Win 快捷键 Mac 快捷键...Command + Shift + 左键单击 把光标放在某个类变量上,按此快捷键可以直接定位到该类 Ctrl + Shift + 左方向键 Option + Shift + 左方向键 代码文件上,

    1.7K41

    python0081_ESC键进化历史_键盘演化过程_ANSI_控制序列_转义序列_CSI

    字(可选)ASR33的ALT MODE 是 今天的ESC键吗????​...键使用ctrl + shift + k 实现esc效果后来的键盘 有了 实体的escescape 跳出 现在键盘都有这个按键 一般左上角用来 退出当前应用/游戏跳出菜单​添加图片注释,不超过...140 字(可选)上图esc 1 的左下Q 的左边esc可以 从当前的纯文字标准输出流里面逃(escape)出来进行控制信息的传输键盘的进化过程 后来连接主机(main frame)用的是...终端(terminal)当年最流行的终端 型号是 DEC VT100​添加图片注释,不超过 140 字(可选)esc 1 左边 还没有 出现在最左上的位置位置的变化 玩一些terminal上面的游戏...esc 在下图中尝试找到esc​添加图片注释,不超过 140 字(可选)esc 对应 (001 1011)2进制再到ascii应用 找一下esc

    20730

    IntelliJ IDEA 2021.2 ,您完全不需要鼠标的 10 种情况

    IntelliJ IDEA 上,您是不是更喜欢使用键盘而不是鼠标?如果答案是肯定的,那接下来的内容正好适合您!在这篇文章,我们将向您展示 10 个不必日常任务中使用鼠标的位置。 1....使用 Esc 返回编辑器窗口,使用 F12 跳转到上次使用的工具窗口 完成 Project 工具窗口、Debug 窗口或 Maven 等工具窗口的操作后,使用 Esc 即可返回编辑器(不必在编辑器窗口中点击鼠标...在下面的 图片中,当我使用 Escape 键将焦点返回编辑器窗口,演示助手没有显示文本“Escape”。 Escape(或其他键)是否特定于上下文?是的。...关闭活动或所有工具窗口 有多种方法可以关闭或隐藏工具窗口。使用 Shift+Escape(或 ⇧ Esc)隐藏活动工具窗口。使用此快捷键可隐藏或显示工具窗口。...请注意,对话框的大小不能超过特定限制(使用鼠标或键盘缩放均适用)。此外,如果您位于对话框的可编辑组件(如文本字段或文本区域),则此快捷键将不起作用。 10.

    9310

    python0067_ESC键进化历史_键盘演化过程_ANSI_控制序列_转义序列_CSI

    光标位置回忆上次内容上次了解了 新的转义模式 \33 逃逸控制字符 esc 这个字符让输出退出标准输出流进行控制信息的设置 可以设置光标输出的位置ASR33的ALT MODE 是 今天的ESC吗???...键的时候 使用ctrl + shift + k实现esc效果后来的键盘 都有了 专门的escescape 跳出现在键盘都有这个按键 一般左上角退出当前游戏跳出菜单一般用这个上图esc 1 的左下...Q 的左边可以从当前的纯文字标准输出流里面 逃(escape)出来进行控制信息的传输键盘的进化过程早年间的一体机 当年最流行的 DEC VT100esc还在1旁边 当时还没有最左上的位置位置的变化玩一些...terminal上面的游戏 可以退出主游戏进行设置、存盘、读档、退出之类的菜单操作知道 什么时候退 比知道 怎么玩更重要功能键 最左边 键盘还没有 统一的标准标准键盘这是101 标准键盘 左上角是esc...标准位置后来放在第一行第一列 escape体现重要性还要用边距和F1之类的拉开距离行业标准键盘开始有了行业标准可以ascii里面找到这个esc字符么?

    70120

    Linux小技巧:如何在 Vim 显示行号?

    要在 Vim 显示行号,请按 Esc 键进入命令模式并使用: :set number! 那!部分是必要的。 让我们通过示例详细了解它。...您可以通过按 Escape (Esc) 键切换到命令模式。 按“:”(冒号)键。Vim 的左下角应该有冒号字符。... Vim 显示相对行号 当您启用了相对行号,这意味着您当前所在的行是行号 0,并且光标上方和下方的行连续编号为 1、2、3。...您可以通过按 Escape (Esc) 键切换到命令模式。 按“:”(冒号)键。... Vim 总是显示相对的行号 您尝试了相对行号,并且您喜欢它。您想知道如何使这种更改永久化,而不是每次打开 Vim 都输入 ':set relativenumber'。

    10.9K00

    Element组件引发的Vuemixins使用,写出高复用组件

    所以你会发现,这两个组件非常的相似,他们共享一些相同的基本功能,如:打开/关闭之间的状态切换。但用法上又各有不同。...Mixins 对象可以包含 Vue 实例的所有选项,当组件使用 Mixins 对象,Mixins 对象的所有选项将和组件的选项进行合并。...可以看到,我们把两个组件的相同功能给剥离出来,采用 mixins 对象的方式然后组件引入即可,这样以来组件就会有更好的灵活性。...选项的合并 data 对象的合并 当组件与混入对象的 data 对象发生冲突,以组件的优先,如何没有冲突将会进行递归合并。...单一霸"); } }; export default { name: "DialogBox", mixins: [mixin], created() { console.log

    98130

    18个您想了解的微小但有用的macOS功能

    您可以书签 > 编辑书签执行以下操作,方法是选择书签,按Enter键,然后输入易于阅读/识别的新名称。 将光标放在“键盘快捷键”字段,按要用于书签的组合键,然后单击“添加”按钮。你去!...4.跳回到搜索结果 获取上面的屏幕截图,我偶然发现了另一个功能:SnapBack。 当您单击Google之类的搜索结果的链接,然后从一个网页跳至下一个网页,回到您的搜索结果是很痛苦的,对吧?...使用快捷键Command + Option + Esc弹出“强制退出应用程序”对话框。然后,您可以从活动应用程序列表中选择该应用程序,然后单击“强制退出”按钮来强制其关闭。...您知道当您将鼠标悬停在电子邮件的网页链接上时会显示的向下箭头吗?那是预览按钮。 单击该按钮可以弹出窗口中显示链接的页面。...17.断开Wi-Fi网络的连接 不,您无需单击关闭Wi-Fi”即可断开当前网络的连接。单击Wi-Fi菜单栏图标之前,按住魔术般的Option键,然后从显示的高级菜单单击“断开连接”选项。

    6.1K30

    windows API 开发飞机订票系统 图形化界面 (三)

    97 return TRUE; 98 }//ReadFlightData() 因为开发环境是vs2013,所以编译时会报错,报错信息是大体是说fopen()函数不安全,根据提示信息,解决办法是文件头部做如下定义...: 1 #define _CRT_SECURE_NO_WARNINGS 或者是项目->属性->c/c++->预处理器->预处理器定义,后面加上_CRT_SECURE_NO_WARNINGS就行了...结下来又遇到问题了:程序退出把数据写入txt文件每行末尾都会有一个\n,读入数据的时候用的是feof()函数,而feof()返回的其实是"最后一次读操作的内容",与数据库的eof()不同,eof()...lstrcpy(passenger->Name, p->Name); 16 MessageBox(hwndDlg, TEXT("登陆成功,单击确定进入程序主界面...//关闭登陆界面 33 34 DialogBox(hInst, MAKEINTRESOURCE(IDD_MAINDLG), NULL, (DLGPROC)MainDlgProc); //弹出主界面

    1.3K140

    Python 制作按键触发Windows通知的脚本

    进制清单如下(完整版可以阅读原文查看): 常数名称 十六进制值 对应按键 VK_BACK 08 Backspace键 VK_TAB 09 Tab键 VK_CLEAR 0C Clear键(Num Lock关闭的数字键盘...pop_up("Num Lock Off", "NumLock_Off.ico") num_curr = num_change time.sleep(0.2) 刚开始运行监听脚本...,先获取到按键的状态,循环体,不断地获得当前按键状态,如果发生了状态变化,则触发pop_up函数,弹出刚刚我们提到的show_toast 函数: def pop_up(body, icon):...比如我们想监听 ESC 按键被按下:VK_ESCAPE=0x1B,使用 keyboard 模块添加一个钩子函数,监听按键: import keyboard as kb def hook_esc(button...): """Alert if ESC button is pressed""" esc_button = kb.KeyboardEvent('down', VK_ESCAPE, 'ESC

    1.8K20
    领券