Pressionar F8 e fechar o JFRAME

Amigos uso NetBeans ( Swing ) gostaria de pressionar F8 e fechar o JFrame, fiz o seguinte código.

rss mais imaginam.,.não fechou… oque poderia estar errado.?

private void formKeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
     if (evt.getKeyCode() ==KeyEvent.VK_F8) {
       this.dispose();
    }
    
}

Obrigado a quem puder ajudar.

A sua tela tem vários componentes?
Se sim desse jeito vc vai ter que colocar um keypressed em cada componente ou fazer isso:

public class Teste extends JFrame {

   private int num = 0;
      public Teste(){
       JButton um = new JButton("um");
       um.addActionListener(new ActionListener(){
           public void actionPerformed(ActionEvent e) {
               num++;
               System.out.println("um " + num);
           }
       });
       JButton dois = new JButton("dois");
       dois.addActionListener(new ActionListener(){
           public void actionPerformed(ActionEvent e) {
               num++;
               System.out.println("dois " + num);
           }
       });
              InputMap inputMap = dois.getInputMap(JButton.WHEN_IN_FOCUSED_WINDOW);
       KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_INSERT, 0);
       inputMap.put(enter, "teste");
       dois.getActionMap().put("teste", new ClickAction(dois));
              um.setBounds(10, 10, 80, 30);
       dois.setBounds(90, 90, 80, 30);
              add(um);
       add(dois);
              setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       setLayout(null);
       setSize(400, 400);
       setVisible(true);
   }
      public class ClickAction extends AbstractAction {
       private JButton button;

       public ClickAction(JButton button) {               this.button = button;
       }
       public void actionPerformed(ActionEvent e) {               button.doClick();}
   }

   public static void main(String[] args) {
       Teste teste = new Teste();
   }

} 

Fazer a cada componente também não é uma boa idéia.

O melhor é usar o InputMap. Basta subtituir seu código por isso aqui:

KeyStroke stroke = KeyStroke.getKeyStroke("F8"); Action actionListener = new AbstractAction() { public void actionPerformed(ActionEvent actionEvent) { dispose(); } }; InputMap inputMap = rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); inputMap.put(stroke, "CLOSE"); rootPane.getActionMap().put("CLOSE", actionListener);

valeu vini tambem tava atras dessa dica deu certin aqui no NetBeans

fiz assim, criei um metodo chamdo fechar

[code]
public void fechar(){

    KeyStroke stroke = KeyStroke.getKeyStroke("F8");

actionListener = new AbstractAction() {
public void actionPerformed(ActionEvent actionEvent) {
JOptionPane.showMessageDialog(null, “Voce apertou uma tecla”);
}
};
InputMap inputMap = rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
inputMap.put(stroke, “CLOSE”);
rootPane.getActionMap().put(“CLOSE”, actionListener);
}[/code]

então depois de initComponents coloquei assim, não esqueça de importar as classes q ele precisa o netbeans diz quais são

[code]public principal() {
initComponents();

    fechar();// SO FIZ CHAMAR O METODO QUE CRIEI
    }[/code]

Brigadão novamente tava doido atras dessa dica, ia colocar um KeyEvent em todos os meus botões e campos maior gambiarra
:lol:

encontrei dessa forma

[code]public void verificarF8(){

getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(“F8”), “fireDoFindNext”);
getRootPane().getActionMap().put(“fireDoFindNext”, new AbstractAction(“fireDoFindNext”) {
// The next two lines should be in one line
public void actionPerformed(ActionEvent evt) {
System.out.println(“F8”);
}
}
);

  }

[/code]

porem como e que eu faço pra cada tecla uma ação, por exemplo, precissonar F2 mostrar System.out.println(“F2”) e precissonar F8 mostrar System.out.println(“F8”) ?

Só uma dúvida estou executando esse código do ViniGodoy, ta funcionando blz, mas se o foco estiver em uma JTable ai não funciona alguem sabe por que?

Obrigado…