当前位置: 首页 > 面试题库 >

Swing:按下ESC键时如何关闭对话框?

白弘伟
2023-03-14
问题内容

使用Swing开发GUI。

我有一个自定义对话框,用于选择要在应用程序中打开的文件。它的类扩展javax.swing.JDialog并包含a和其他组件,JFileChooser可以将其切换为显示或隐藏。

JFileChooser组件已经可以单独处理ESC键:当显示文件选择器(嵌入在我的对话框中)并且按ESC时,文件选择器将隐藏自身。

现在,我希望对话框执行相同的操作:当我按ESC时,我希望对话框关闭。请注意,当显示嵌入式文件选择器时,ESC键应仅将其隐藏。

有任何想法吗 ?


问题答案:

使用InputMapActionMap处理Swing中的关键操作。要干净地关闭对话框,请向其发送一个关闭窗口事件。

从我的博客:

private static final KeyStroke escapeStroke = 
    KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0); 
public static final String dispatchWindowClosingActionMapKey = 
    "com.spodding.tackline.dispatch:WINDOW_CLOSING"; 
public static void installEscapeCloseOperation(final JDialog dialog) { 
    Action dispatchClosing = new AbstractAction() { 
        public void actionPerformed(ActionEvent event) { 
            dialog.dispatchEvent(new WindowEvent( 
                dialog, WindowEvent.WINDOW_CLOSING 
            )); 
        } 
    }; 
    JRootPane root = dialog.getRootPane(); 
    root.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put( 
        escapeStroke, dispatchWindowClosingActionMapKey 
    ); 
    root.getActionMap().put( dispatchWindowClosingActionMapKey, dispatchClosing 
    ); 
}


 类似资料:
  • 问题内容: 我有一个EditText用于输入的对话框。当我单击对话框上的“是”按钮时,它将验证输入,然后关闭对话框。但是,如果输入错误,我希望保留在同一对话框中。每次无论输入什么,当我单击“否”按钮时,都应自动关闭对话框。如何禁用此功能?顺便说一句,我在对话框上的按钮上使用了PositiveButton和NegativeButton。 问题答案: 编辑:这仅在API 8+上有效,如某些注释所述。

  • 我有一个JFrame调用一个新的JDialog,这个JDialog有一个关闭它的按钮。 当JDialog关闭时,JFrame应该重新绘制。但是当我用按钮关闭JDialog时,什么也不会发生,当我用经典的“X”按钮关闭时,就不会发生这种情况。 这是来自JFrame的windowListener: 这里是JDialog中关闭JDialog的按钮的代码: 就像我说的,监听器中的JFrame需要在JDia

  • 我正在安装我的应用程序,然后使用主活动保存数据,并转到另一个片段活动。下一次我启动我的应用程序时,总是预览第二个片段,然后按“返回”键返回主活动,但我不想返回主活动。我想按后退按钮关闭我的应用程序。我试试这个

  • 我有一个带有searchView图标的操作栏。我点击searchView图标,出现softInputMode键盘,我的ListView出现用于搜索。但是,当您关闭searchView时,searchView会关闭,但我无法让ListView在searchView关闭时也关闭。 下面是我在activity_maps中的ListView代码。xml 地图ctivity.java 所以最初当MapsAc

  • 我有一个JavaFX应用程序,它最初将显示一个登录对话框,供用户输入用户名和密码。请参阅下面的源代码。 如果用户单击“连接”按钮,应用程序将使用输入的用户名和密码执行登录,隐藏登录对话框,然后显示主窗口。 如果用户点击“退出”按钮或“X”关闭按钮,将显示一个警报以获得用户的确认。如果用户确认,则应用程序退出。 我的问题是当登录对话框显示时用户按Escape键会发生什么。当按下此键时,将显示退出确认

  • 问题内容: 如何删除由jQuery UI创建的对话框上的关闭按钮(右上角的 X )? 问题答案: 我发现这最终成功了(请注意,第三行覆盖了打开功能,该功能查找按钮并将其隐藏): 要隐藏所有对话框上的关闭按钮,您也可以使用以下CSS: