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?
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.
F
flaryon
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á!
Mikhas
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.
F
flaryon
vou resumir o código das classes:
classe do atalho
publicclassTeclasAtalhoTecladoimplementsAWTEventListener{publicvoideventDispatched(AWTEventevent){if(eventinstanceofKeyEvent){KeyEventkeyEvent=(KeyEvent)event;if(keyEvent.getID()==KeyEvent.VK_F8){//executar ação do botão F8}}}}
classe dois com os componentes
publicclasseMinhaAplicacaoextendsFrameView{//...//açãoexecutadapelobotãoF8@ActionpublicvoidexecutaF8(){//...jlabel1.setText("a tecla f8 foi pressionada");jPanel1.removeAll();//...}//...//...}
Mikhas
flaryon:
vou resumir o código das classes:
classe do atalho
publicclassTeclasAtalhoTecladoimplementsAWTEventListener{publicvoideventDispatched(AWTEventevent){if(eventinstanceofKeyEvent){KeyEventkeyEvent=(KeyEvent)event;if(keyEvent.getID()==KeyEvent.VK_F8){//executar ação do botão F8}}}}
classe dois com os componentes
publicclasseMinhaAplicacaoextendsFrameView{//...//açãoexecutadapelobotãoF8@ActionpublicvoidexecutaF8(){//...jlabel1.setText("a tecla f8 foi pressionada");jPanel1.removeAll();//...}//...//...}
Ja pensou em fazer algo do genero...
publicclassTeclasAtalhoTecladoimplementsAWTEventListener{publicvoideventDispatched(AWTEventevent){if(eventinstanceofKeyEvent){KeyEventkeyEvent=(KeyEvent)event;if(keyEvent.getID()==KeyEvent.VK_F8){aplicacao.acao();}}}}publicclasseMinhaAplicacaoextendsFrameView{//...//açãoexecutadapelobotãoF8@ActionpublicvoidexecutaF8(){this.acao();}publicvoidacao(){//...jlabel1.setText("a tecla f8 foi pressionada");jPanel1.removeAll();//...}}