Pessoal...
Eu tou fazendo 1 exemplo simples, de imprimir a tecla que a pessoa aperta durante a aplicacao, que tem um jFrame...
Por que nao ta funfando? Deem 1 olhada no codigo:
publicclassBottingRulesextendsJFrameimplementsKeyListener{privatestaticfinallongserialVersionUID=1L;privateJLabellblf1;privateJLabellblf2;privateJLabellblwellcome;booleanflag;publicBottingRules(){setTitle("Exemplo");setResizable(false);setLayout(newMigLayout());setDefaultCloseOperation(DISPOSE_ON_CLOSE);// /instanciarcomponentes();// /add(lblwellcome,"wrap");add(lblf1,"wrap");add(lblf2,"wrap");// //pack();setLocationRelativeTo(null);}privatevoidinstanciarcomponentes(){lblwellcome=newJLabel("Exemplo de Robot");lblwellcome.setForeground(Color.blue);lblf1=newJLabel("Aperte F1 para Iniciar");lblf2=newJLabel("Aperte F2 para Parar");}publicstaticvoidmain(String[]args){newBottingRules().setVisible(true);}@OverridepublicvoidkeyPressed(KeyEvente){System.out.println(e);}@OverridepublicvoidkeyReleased(KeyEvente){}@OverridepublicvoidkeyTyped(KeyEvente){}}
Opa..
Valew..
Funcionou direitinho... Mas teve um probleminha:
packagecom.pedro.tibiabot;importjava.awt.AWTException;importjava.awt.Color;importjava.awt.Font;importjava.awt.Robot;importjava.awt.event.InputEvent;importjava.awt.event.KeyEvent;importjava.awt.event.KeyListener;importjavax.swing.JFrame;importjavax.swing.JLabel;importnet.miginfocom.swing.MigLayout;publicclassBottingRulesextendsJFrameimplementsKeyListener{privatestaticfinallongserialVersionUID=1L;privateJLabellblf1;privateJLabellblf2;privateJLabellblwellcome;booleanflag;Robotrobot;publicBottingRules(){setTitle("Botting is ROX");setResizable(false);setLayout(newMigLayout());setDefaultCloseOperation(DISPOSE_ON_CLOSE);// /instanciarcomponentes();// /add(lblwellcome,"wrap");add(lblf1,"wrap");add(lblf2,"wrap");addKeyListener(this);// //pack();setLocationRelativeTo(null);}privatevoidinstanciarcomponentes(){lblwellcome=newJLabel("Bot is Legal now =)");lblwellcome.setForeground(Color.blue);lblwellcome.setFont(newFont("Courier",Font.BOLD+Font.ITALIC,20));lblf1=newJLabel("Aperte F1 para Iniciar");lblf2=newJLabel("Aperte F2 para Parar");try{robot=newRobot();}catch(AWTExceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args){newBottingRules().setVisible(true);}privatevoidiniciaRobo(){newThread(newRunnable(){publicvoidrun(){while(flag==true){robot.mouseMove(1135,540);robot.mousePress(InputEvent.BUTTON1_MASK);robot.mouseMove(540,395);robot.mouseRelease(InputEvent.BUTTON1_MASK);robot.delay(2000);}}}).start();}privatevoidparaRobo(){flag=false;}@OverridepublicvoidkeyPressed(KeyEvente){if(e.getKeyCode()==e.VK_F1){lblf1.setText("ON");iniciaRobo();flag=true;return;}if(e.getKeyCode()==e.VK_F2){lblf1.setText("OFF");paraRobo();return;}}@OverridepublicvoidkeyReleased(KeyEvente){}@OverridepublicvoidkeyTyped(KeyEvente){}}
Para eu apertar o F2, eu tenho que estar com o frame na tela..
Mas quando eu aperto f1, e ele inicia o robot, o focus vai para a aplicacao... Entao se eu apertar o f2, ele nao para..
Eu tenho que apertar no Frame, e depois apertar f2...
Como que eu faco para adicionar o KeyListener, em vez de no this, para a aplicacao que esta aberta?
addKeyListener(NA APLICACAO); ou entao addKeyListener(NA JANELA QUE ESTIVER ABERTA);
M
marcobiscaro2112
Pelo que entendi, você está fazendo um bot para o Tibia e quer que quando você pressione o F2 (mesmo com a janela do Tibia em foco) o Robot pare. É isso mesmo? Se for, desculpe informar, mas aí a coisa complica. O Swing não consegue capturar eventos de tecla que ocorrem fora de uma aplicação Java (no caso, na janela do jogo). Se não me engano, SWT suporta isso, mas você terá que partir por um caminho totalmente diferente…
pedroroxd
Tibia eh jogo de viado…
Tou level 153… E vou vender meu char semana que vem por 3200,00
To jogando MU, e tou level 257…
Mesmo para tibia, entao como que funciona bots como NG, Elfbot e tal?
Estou fazendo 1 para MU, mas precisa funcionar da mesma maneira…
Nao tem como ele sempre ficar com focus?
Ja vi 1 programa que eu usava a uns 4 anos atras, que chamava Tasker… Ele sempre ficava com o focus…
M
marcobiscaro2112
Pode até ser que sua janela consiga ficar sempre com o foco, mas as teclas não devem ser enviadas para a outra janela (o jogo)? Se sua janela estivesse com o foco ela que iria receber os eventos.