java - jdialog 输入和转义不起作用

标签 java swing escaping key-bindings enter

上下文:我正在尝试创建模态 JDialog 并在一个条件下使用自定义按钮几乎复制 JOptionPane 功能 - 我不想使用 UIManager 来设置窗口样式。

问题:JDialog 没有像预期那样响应 ESCAPE 和 ENTER 键。我已经尝试了我可以在网上找到的所有建议解决方案(多个监听器解决方案、设置默认按钮等),但我无法让它工作。

全类已上传至pastebin http://pastebin.com/Kcj82h2i

扩展JDialog类中的实际按键设置是通过

完成的
InputMap inputMap = getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
ActionMap actionMap = getRootPane().getActionMap(); 

inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "returnyes");
actionMap.put("returnyes", new ResultYes());

inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "returnno");
actionMap.put("returnno", new ResultNo());

并且使用以下代码从 JFrame 调用该对话框:

if (results == 1)
{
    InvoiceLinesTableModel tm = (InvoiceLinesTableModel) tbl_invoiceItems.getModel();
    InvoiceLinesTableRow row = tm.getRow(tbl_invoiceItems.getSelectedRow());
    tm.deleteRow(row);
    tm.fireTableDataChanged();
    StaticFunctions.updateTableRowHeights(tbl_invoiceItems);
}

帮忙?

最佳答案

由于 JDialog 是模态的,当窗口变得可见时,对 addCustomKeyMaps() 的调用将被阻止。您应该在调用 setVisible(true) 之前进行此调用。

关于java - jdialog 输入和转义不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14665057/

相关文章:

java - 使用按钮继承

java - 有效实现此 Java MouseListener 逻辑

c# - 如何避免 Epson EPOS 上的缓冲区溢出(通过串口)?

java - Hibernate 具有相同类的多对多,无法编写 JSON : Infinite recursion

java - 使用 AngularJS 和 SPRING 插入数据库

java - 然后在 Consumer 接口(interface)中使用 lambda

java - 是否有可能在 java 7 中有一个包含标题栏的半透明窗口?

asp.net - 在 string.replace 中转义反斜杠

node.js - 在 NodeJS 中取消转义字符串

java hibernate ' '中的未知列 'field list'