Pessoal é o seguinte, eu quero que quando eu pressionar a tecla enter em cima dos botões eles realizam uma determinada função, bom beleza, isso eu consigo fazer, o problema é que eu consigo fazer a tecla Enter apenas realizar uma ação, por exemplo:
Se eu teclar enter em cima do botao OK, ele vai efetuar a ação do OK.
O problema é que quando pressiono enter com o tab andando até o cancelar ele realizar a mesma função do OK, procurei mas não achei como fazer o enter realizar 2 funções diferentes para cada botao que eles estiver clicado, abaixo esta os trechos dos códigos que envolvem essas ações
Aqui é onde construo minha tela e passo os botões para o ActionPerformd e para o KeyPressed
[code]
public void actionPerformed(ActionEvent e) {
if (e.getSource() == botaoOk)
{
if (cont == 0)
{
++cont;
fieldHora.disable();
fieldData.disable();
labelConfirmacao.setText(“Agendamento realizado com sucesso”);
repaint(); //atualizar frame
A.horarioAgendado(fieldData.getText(), fieldHora.getText());
A.mostrarData(true);
Thread thHora = A;
thHora.start();
}else{
JOptionPane.showMessageDialog(null, “Você já fez um agendamento”)
}
}
if (e.getSource() == botaoCancelar)
{
dispose();
System.exit(0);
}
}[/code]
E esse é caso o Enter seja pressionado
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
if (cont == 0)
{
++cont;
fieldHora.disable();
fieldData.disable();
labelConfirmacao.setText("Agendamento realizado com sucesso");
repaint(); //atualizar frame
A.horarioAgendado(fieldData.getText(), fieldHora.getText());
A.mostrarData(true);
Thread thHora = A;
thHora.start();
}else{
JOptionPane.showMessageDialog(null, "Você já fez um agendamento, para cancelar e fazer outro agendamento clique em Cancelar e abra-o novamente");
}
}
}
Caro andre santos, os meu botões funcionam, a classe actionPerformed funciona corretamente, veja:
[code] public void actionPerformed(ActionEvent e) {
if (e.getSource() == botaoAgendar) //Aqui esta a comparação para o botaoAgendar
{
if (cont == 0)
{
++cont;
fieldHora.disable();
fieldData.disable();
labelConfirmacao.setText(“Agendamento realizado com sucesso”);
repaint();
A.horarioAgendado(fieldData.getText(), fieldHora.getText());
A.mostrarData(true);
Thread thHora = A;
thHora.start();
}else{
JOptionPane.showMessageDialog(null, “Você já fez um agendamento, para cancelar e fazer outro agendamento clique em Cancelar e abra-o novamente”);
}
}
if (e.getSource() == botaoCancelar) //Aqui esta a comparação para o botao Cancelar
{
dispose();
System.exit(0);
}
}[/code]
O meu problema eh com a classe keyPressed, eu não sei como fazer a tecla enter funcionar para dois botões, alias funcionar para 2 botões eu consigo, o que não consigo é funcionar para 2 botões que utilizam codigos diferentes, assim como esta no meu ActionPerformed.
Entendeu minha duvida?
Mas mesmo assim vlw pela ajuda!
Estou pesquisando mais nada achei, se alguém poder me ajuda ficarei muito grato =]
No actionPerformed vc testou p/ saber qual botão executou a ação, mas no método keyPressed vc não fez o teste. Vc precisa fzr o mesmo teste no keyPressed. Mais ou menos desta forma:
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
if (e.getSource() == botaoOk){ //Testando se foi o botão OK
if (cont == 0)
{
++cont;
fieldHora.disable();
fieldData.disable();
labelConfirmacao.setText("Agendamento realizado com sucesso");
repaint(); //atualizar frame
A.horarioAgendado(fieldData.getText(), fieldHora.getText());
A.mostrarData(true);
Thread thHora = A;
thHora.start();
}else{
JOptionPane.showMessageDialog(null, "Você já fez um agendamento, para cancelar e fazer outro agendamento clique em Cancelar e abra-o novamente");
}
}
if (e.getSource() == botaoCancelar){ //Testando se foi o botão Cancelar
//Executa alguma coisa
}
}
}
Ah entendi! Não sabia que dava pra usar essa comparação dentro da KeyPressed.
Eu usei funcionou o botaoOk, mas quando o foco esta no botaoCancelar nada acontece. Deve ser algum erro de digitação meu, vou dar uma olhada mais tarde pq agora acabou meu expediente.
Enfim, topico RESOLVIDO!
Muito obrigado Andre Santos!