Quem ja fez controle de aplicacoes via teclado em Java/Swing sabe o quanto e chato tratar eventos de teclado: Tem que adicionar KeyListener em TODOS os componentes, porque se o componente que tiver o foco nao tiver o listener, nada acontece.A solucao pra isso? Adicionar KeyListeners nos componentes e em seus filhos, recursivamente! Eis como:1) Criamos a seguinte funcao no nosso JFrame (Como ele se baseia em Component, essa dica funciona com todas as classes que herdam dela, como JDialog, JPanel, etc):private void addKeyAndContainerListenerRecursively(Component c) { try { c.addKeyListener(this); if (c instanceof Container) { Container cont = (Container) c; cont.addContainerListener(this); Component[] children = cont.getComponents(); for (int i = 0; i < children.length; i++) { addKeyAndContainerListenerRecursively(children[i]); } } } catch (Exception e) { //Anuncie Aqui }}2) Fazemos o JFrame implementar dois Listeners, o KeyListener e o ContainerListener:public class MeuJFrameLegal extends JFrame implements KeyListener, ContainerListener {//...}3) Temos que implementar as seguintes funcoes: public void keyTyped(KeyEvent e) {}public void keyPressed(KeyEvent e) {}public void keyReleased(KeyEvent e) {}public void componentAdded(ContainerEvent e) {}public void componentRemoved(ContainerEvent e) {}4) Na funcao keyPressed, colocamos nosso codigo legal e magico:public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_F1: System.out.println("Parabens, voce pressionou F1"); break; }}5) E pronto! Agora basta chamar a funcao addKeyAndContainerListenerRecursively no final do seu metodo de inicializacao da parte grafica (aquele que a gente adiciona os componentes ao Componente)."Mas tio Preco, pra que serve o ContainerListener???"O ContainerListener serve pro seguinte: Digamos que sua janela chame outra janela, e voce quer que as funcoes que voce atribuiu as teclas na janela pai tambem estejam disponiveis na janela filha. Entao voce faz o seguinte:public void componentAdded(ContainerEvent e) { addKeyAndContainerListenerRecursively(e.getContainer());}E pronto (de novo)! Agora todas as janelas que a janela pai chamar "herdarao" o Listener \o/E isso, te o/(Fonte: Java World) Estava com problema para alterar a senha do SYSDBA no firebird no windows 7.Dava o seguinte erro ao executar o gsec como explicado nesse artigo do perereco: http://preclog.blogspot.com/2008/03/trocar-senha-do-sysdba-no-firebird.htmlO erro:Cannot attach to services manageruser name and password are required while attaching to the services managerunable to open databaseA solucao:colocar o parametro -database "localhost:C:\Program Files\Firebird\Firebird_2_0\security2.fdb" no comando e voila E meio chato ficar escutando um beep no buzzer, cada vez que voce aperta uma tecla "backspace" a mais, ou tenta salvar algo que ja esta salvo. Para desabilitar o buzzer no Ubuntu, basta colocar o speaker do pc na lista negra do modprobe, assim:eu@eu:~$ echo "blacklist pcspkr" | sudo tee -a /etc/modprobe.d/blacklist...e pronto. Fim do barulho chato.E necessario reiniciar o Ubuntu, ou recarregar o modprobe:eu@eu:~$ sudo modprobe -r pcspkrAbracos \o/(Fonte: Alex S.) Oi povo,Muitas vezes, voce precisa validar algum campo, que depende do conteudo digitado em um JTextField (ou qualquer componente que use Document). Por exemplo: Quando voce solicita ao usuario a digitacao de um codigo para que apareca a descricao de um produto na tela.Muita gente usa o KeyListener pra isso, mas ele e disparado antes do caracter ser colocado no JTextField, dai ele nao pega o texto digitado por inteiro.A solucao pra isso e usar o bom e velho DocumentListener! \o/Exemplo: busca produto pelo codigo digitadoJTextField textField = new JTextField();textField.getDocument().addDocumentListener(new DocumentListener(){