:shock:
Oi!
Estou precisando fazer o seguinte:
- Quando eu prescionar a tecla ESC eu quero fechar o meu InternalFrame, só que eu não sei como pegar quando é prescionado a tecla!!!
Se alguem souber me ajuda!!
Luiz Bernardo
:shock:
Oi!
Estou precisando fazer o seguinte:
Se alguem souber me ajuda!!
Luiz Bernardo
faz tempo que nao mecho com isso 
mas coloque um KeyListener e no método keyPressed(KeyEvent e)
verifique se foi pressionada a tecla ESC…
tem uma constante VK_ESCAPE na classe KeyEvent…
vc tb pode recuperar o código ascii através do metodo e.getKeyCode()
o código ascii do ESC é 27 
Tu tem como me mandar um exemplo!
Use a interface KeyListener
De uma olhada aki
http://java.sun.com/docs/books/tutorial/uiswing/events/keylistener.html
No meu InternalFrame tem uns 25 JTextFields!
Eu vou ter que atribuir uma ação para cada um deles???
não tem um jeito mais facil?
Luiz Bernardo
O que vc quer é mais ou menos isso ?
class NomedaClasse extends KeyAdapter {
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
// implementa se a tecla pressionada é a Tecla ESC
if (c == KeyEvent.VK_ESCAPE )
facaAlgumaCoisa();
// implementa se é um dígito ou um traço
if (!Character.isDigit© && (c != ‘-’))
facaOutraCoisa();
}
}
Mr. F
Você pode usar este código, aí não vai precisar colocar o listener em cada um dos campos:
KeyStroke ks = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, true);
getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(ks,"CancelAction");
getRootPane().getActionMap().put("CancelAction", new AbstractAction() {
public void actionPerformed(ActionEvent ae) {
// fechar a janela
}
});
É melhor criar uma única classe interna que serve como ouvidora de eventos para todos os objetos da classe principal.
pessoal, estou tentando colocar o codigo abaixo dentro do jpanel da tela principal do meu sistema, para que ele responda ao teclar o F2, mas ainda nao consigo fazer funcionar. Alguem pode me ajudar nisso?
KeyStroke ks = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, true);
getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(ks,"CancelAction");
getRootPane().getActionMap().put("CancelAction", new AbstractAction() {
public void actionPerformed(ActionEvent ae) {
// fechar a janela
}
});
T+
Não to conseguindo adicionar uma imagem no jDesktopane. tenho meu programa, com janelas jInternalFrame e a janelaPrincipal que é um frame com jDesktopPane, quando executo o programa principal, quero q apareça uma imagem ou figura q eu qero colocar, só q não estou conseguindo fazer isso alguém sabe me dizer como posso fazer, até vi alguns ex: na aqi no GUJ mas nenhum funcionou. ou melhor não consegui. bl.
Não to conseguindo adicionar uma imagem no jDesktopane. tenho meu programa, com janelas jInternalFrame e a janelaPrincipal que é um frame com jDesktopPane, quando executo o programa principal, quero q apareça uma imagem ou figura q eu qero colocar, só q não estou conseguindo fazer isso alguém sabe me dizer como posso fazer, até vi alguns ex: na aqi no GUJ mas nenhum funcionou. ou melhor não consegui. bl.3
Nightcrowls,
Não pegue carona no tópico dos outros!!!
Sansom,
Olha, esse negócio de fechar com o ESC. O jeito ideal é com o InputMap e o ActionMap, como mostrou o fenrir ali em cima. O KeyListener dá muito trabalho e é muito sujeito a erros, já que é fácil incluir um componente depois e esquecer de adicionar o listener. Você pode ver um post mais detalhado sobre isso aqui: http://www.guj.com.br/posts/list/47289.java#258583
Além disso, há situações em que os listeners não funcionam como deveriam, como por exemplo, quando nenhum componente tem o foco.
Agora… Eu usei esse negócio do ESC numa aplicação e notei uma desvantagem: Quando o usuário fica impaciente, ele acaba pressionado ESC.
Se o seu processamento demorado estiver na thread do Swing, o que vai ocorrer é que a janela continuará parada processando e só fechara quando finalmente for preenchida com a informação que o usuário quer. Ele tem um vislumbre do dado por alguns centézimos de segundos, quando a janela finalmente processa o esc e fecha. Sacanagem, não?
Se seu processamento não estiver na thread do Swing, a janela fecha na hora. Menos irritante, mas muitas vezes não é exatamente o que o usuário esperava.
Então, pense 2 vezes antes de adicionar um comportamento que não é o padrão do seu ambiente de janelas.