doClick();

bem, estou com o seguinte problema, eu tenho uma classe com meus componentes visuais, e outra onde eu seto atalho de teclado. Logo, qd pressiono determinada tecla, ele faz um “doClick()” no botão, como se tivesse pressionado omesmo com o mouse…gostaria de saber se existe como eu chamar a Action do botão sem que mostre o botão sendo pressionado? algum outro método que chame a acão do botão?

agradeço qualquer ajuda!

Isso me cheira gambiarra… mas…

Você tentou usar a classe Robot para precionar rapidamente o tal botão?

De qualquer maneira, acho que a maneira como você esta “ligando” suas classes de interface com suas classes de negocio não esta sendo feita do melhor jeito.

deixa eu explciar melhor…
tenho duas classes uma com todos os componentes visuais, botões, paineis formulários etc…
estes botões executam determinadas Actions…

existe uma segunda classe que deve detectar qual tecla é digitada e executar a ação referente aquele botão…cada botão da minha aplicação possui um atalho de tecla associado…loxo se eu digitar “f1” ela chama o botãoF1 pelo método botãoF1.doClick();

eis o problema, ao se chamr a ação pelo teclado, é perceptível que o botão é perssionado já que chamei pelo método doClick();

e eu gostaria q isso não fosse perceptível, logo…a solução que pensei q desse certo, seria apssar a Action como parâmetro…mas não sei como fazê-lo…

saberia algum outro modo…?

grato desde já!

Acho que entendia oque esta acontecendo mas se for para mim imaginar como esta seu codigo e explicar como fazer vai ficar muito complicado.

Por que você não posta seu codigo. Fica mais facil.

vou resumir o código das classes:

classe do atalho

public class TeclasAtalhoTeclado implements AWTEventListener {

 public void eventDispatched(AWTEvent event)
     {
         if (event instanceof KeyEvent) {
            KeyEvent keyEvent = (KeyEvent) event;

             if (keyEvent.getID() == KeyEvent.VK_F8) {
                       //executar ação do botão F8
              } 
          }
        }
 }

classe dois com os componentes

public classe MinhaAplicacao extends FrameView{

//...


//ação executada pelo botão F8
@Action
public void executaF8(){
   //...
   jlabel1.setText("a tecla f8 foi pressionada");
   jPanel1.removeAll();
   //...
}

//...

//...
}

[quote=flaryon]vou resumir o código das classes:

classe do atalho

public class TeclasAtalhoTeclado implements AWTEventListener {

 public void eventDispatched(AWTEvent event)
     {
         if (event instanceof KeyEvent) {
            KeyEvent keyEvent = (KeyEvent) event;

             if (keyEvent.getID() == KeyEvent.VK_F8) {
                       //executar ação do botão F8
              } 
          }
        }
 }

classe dois com os componentes

[code]
public classe MinhaAplicacao extends FrameView{

//…

//ação executada pelo botão F8
@Action
public void executaF8(){
//…
jlabel1.setText(“a tecla f8 foi pressionada”);
jPanel1.removeAll();
//…
}

//…

//…
}

[/code][/quote]

Ja pensou em fazer algo do genero…

public class TeclasAtalhoTeclado implements AWTEventListener {

 public void eventDispatched(AWTEvent event)
     {
         if (event instanceof KeyEvent) {
            KeyEvent keyEvent = (KeyEvent) event;

             if (keyEvent.getID() == KeyEvent.VK_F8) {
                       aplicacao.acao();
              } 
          }
        }
 }

public classe MinhaAplicacao extends FrameView{

//...


//ação executada pelo botão F8
@Action
public void executaF8(){
    this.acao();
}

public void acao(){
   //...
   jlabel1.setText("a tecla f8 foi pressionada");
   jPanel1.removeAll();
   //...

}

}