मैं देख सकता हूं कि सबसे अच्छा तरीका रूट फलक के क्रिया मानचित्र पर Action
जोड़ना है, और उस रूट को रूट फलक के इनपुट मानचित्र का उपयोग करके एस्केप कुंजी से लिंक करना है।
इसके लिए, आपको Action
की आवश्यकता है। (। यानी cancelButton.getAction() != null
) अपने को रद्द बटन के व्यवहार एक कार्रवाई के रूप में कार्यान्वित किया जाता है, तो यह काम करेगा:
getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "CANCEL");
getRootPane().getActionMap().put("CANCEL", cancelButton.getAction());
अन्यथा, यदि रद्द बटन के तर्क एक ActionListener
के माध्यम से कार्यान्वित किया जाता है, तो आप ActionListener
की actionPerformed()
विधि हो सकता था private void onCancel()
विधि को कॉल करें जो तर्क लागू करता है, और एक ही विधि को "रद्द करें" क्रिया पंजीकृत करता है।
getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "CANCEL");
getRootPane().getActionMap().put("CANCEL", new AbstractAction(){
@Override
public void actionPerformed(ActionEvent e)
{
onCancel();
}
});
मान लीजिए कि आप बचने की कुंजी का मतलब है .. – NateS