gpt4 book ai didi

java - jdialog enter 和 escape 不起作用

转载 作者:行者123 更新时间:2023-11-30 06:26:13 25 4
gpt4 key购买 nike

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

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

整个类(class)都上传到 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 enter 和 escape 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14665057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com