コンテキスト: モーダル JDialog を作成し、1 つの条件でカスタム ボタンを使用して JOptionPane 機能をほぼ複製しようとしています。UIManager を使用して Windows スタイルを設定したくありません。
問題: JDialog が ESCAPE および ENTER キーに応答しません。オンラインで見つけることができるすべての提案されたソリューション (複数のリスナー ソリューション、デフォルト ボタンの設定など) を試しましたが、機能しません。
クラス全体が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);
}
ヘルプ?