Configurando keylistener

É o seguinte, eu tenho uma classe extendendo JFrame e implementando keylistener, é aquele do java como programar 3 edicao, essa classe tem apenas um jtextarea e é adicionada com

getContentPane().add(textArea);

mas se eu usar um container para adicionar meus componentes o keylistener para de funcionar. Na classe simples eu adiciono keylistener usando

addKeyListener(this);

na classe com varios componentes eu uso

c.addKeyListener(this);

mas não funciona, alguem sabe o que pode ser?? O programa não dispara exceçoes.

Estou tentando entender seu exemplo. Você tem um Frame, e quando você adiciona um container esterno, o listner pára de funcionar. Certo? Ou o seu container é criado internamente mesmo?
Se for externo, você vai ter que passar o listner de alguma forma para o container, ou ainda, implementar o listner em seu container.
Se não form poste parte de seu código ai, pra podermos avaliar melhor.

cara,vá adicinando um listener por componente…
componente.addKeyListener(this);
Vc tah tentando adicionar o Listener ao conteiner é isso???(acho q não entendi direito…)

O codigo é este, ele está funcionando com apenas a JTextArea, mas se voce descomentar o codigo do JButton e comentar o outro codigo ele para de receber os eventos

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class KeyDemo extends JFrame implements KeyListener{
  private String line1 = "", line2 = "";
  private String line3 = "";
  private JTextArea textArea;
  //private JButton btn;//descomente este
  private Robot rb;

  public KeyDemo() {
    super("Demostrando pressionamento de teclas");
    textArea = new JTextArea(10,15);
    textArea.setText("Pressione uma tecla no teclado!");
    textArea.setEnabled(false);
    /*btn = new JButton("Clique");//descomente este
    btn.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent e){
      }
    });*/

    try{
      rb = new Robot();
    }
    catch(AWTException e){
    }
    addKeyListener(this);//comente aqui
    //Container c = getContentPane();
    //c.addKeyListener(this);
    //c.setLayout(new FlowLayout());
    //c.add(textArea);
    //c.add(btn);
    getContentPane().add(textArea);//comente aqui
    setBounds(0,0,400,200);
    show();
  }
        
  public void keyPressed(KeyEvent e){
    line1 = "Key pressed: " + e.getKeyText(e.getKeyCode());
    setLines2and3(e);
  }
  public void keyReleased(KeyEvent e){
    line1 = "Key released: " + e.getKeyText(e.getKeyCode());
    setLines2and3(e);
  }
  public void keyTyped(KeyEvent e){
    line1 = "Key typed: " + e.getKeyText(e.getKeyCode());
    setLines2and3(e);
  }

  private void setLines2and3(KeyEvent e){
    line2 = "This is a " + (e.isActionKey() ? "" : "not ") + "an action key";
    String temp = e.getKeyModifiersText(e.getModifiers());
    line3 = "Modifiers keys pressed: " + (temp.equals("") ? "none" : temp);
    textArea.setText(line1 + "
" + line2 + "
" + line3 + "
");
  }                

  public static void main(String args[]){
    JFrame.setDefaultLookAndFeelDecorated(true);
    KeyDemo app = new KeyDemo();

    app.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent e){
        System.exit(0);
      }
    });
  }
}

para adicionar o Jbutton descomente o codigo comentado e comente aqueles marcados

O problema eh o seguinte. O único componente na tela que xonsegue receber foco é o botão, então adicione isto em vez do actionPerformed:

btn.addKeyListener(this);

Irá funcionar.
O problema é que o único component com o evento de keylistener era o container, e não tinha como dr o foco nele, par então pressionar uma tecla.

Se você quiser que o JFrame responda aos eventos do teclado, é só vc sobrescrever o método :

public boolean isFocusTraversable() { return true; }

ou

setFocusable(true);

Assim ele poderá responder aos eventos do teclado…
[]'s
Chico[/code]

tentei sobrescrever o metodo

public boolean isFocusTraversable() { 
      return true; 
   }

e tambem tentei o

setFocusable(true);

mas continua sem responder as teclas, quanto adicionar o keylistener ao botao, ele pára de funcionar se perder o foco. Preciso que a keylistener continue funcionando independente do foco. Caso achem que é código mal intencionado, fiquem tranquilos, preciso disto para fazer alguns bloqueios no windows, como impedir o acesso ao menu iniciar. Se tiver alguma sugestão diferente. É só para windows mesmo, até pesquisei algo em assembly mas não encontrei nada para iniciante.

já tentei os tres métodos mencionados, mas no metedo de adicionar o keylistener ao botao nao serve se o botao perder o foco. preciso de algo independente de foco.
O meu problema é impedir o acesso ao menu iniciar, consigo bloquear a tecla windows, alt+tab, mas o ctrl+alt+del está meio dificil pois é possivel chamar o task manager usando ctrl+shift+esc, se tiver alguma sugestao alternativa… ja tentei procurar algo em assembly mas nao tem nenhum material para iniciante bom.