Gente tou com problemas com textfield preciso fazer um jogo em que a imagem se movimente de acordo com q foi escrito no campo do textfield, tipo se eu escrever: frente a imagem anda p frente e botar esquerda ela vai p esquerda ja tentei de tojo geito fazer se mover mais nao consigo!
se alguem tiver um exemplo por favor me amostree q estou muito aperriado tentando fazer isso!!
:shock: :shock: :shock: :shock: :shock:
obs: os movimentos q pode fazer eh:cima,baixo,direita,esquerda.
Essa imagem está em algum componente, como JLabel? Se sim, você está tentando alterar a posição desse componente? Se estiver utilizando um LayoutManager, esse pode influenciar no momento de mover o componente.
Marcello360
eu ainda nao tenho conhecimento de LayoutManager! nao dfaço ideia d q seja!
aqui eu estava tenando compara o q era escrito com uma string para poder andar so q nao tive exito!
publicComEvento(){super("ABC");setSize(500,500);setLocationRelativeTo(null);setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);getContentPane().setBackground(Color.BLUE);setLayout(null);danc=newImageIcon(getClass().getResource("formiga.png"));danc2=newJLabel(danc);//danc2.setBounds(10,10,danc.getIconHeight(),danc.getIconWidth());add(danc2);danc2.setBounds(posX,posY,50,50);add(danc2);JTextFieldtexto=newJTextField("Digite o texto!");texto.setSize(20,30);add(texto);texto.getText();Stringtexto1=texto.getText();texto.setBounds(300,300,100,100);texto.addFocusListener(newFocusAdapter(){publicvoidfocusLost(FocusEvente){if(texto1=="frente();"){posY--;danc2.setLocation(posX,posY);}}});}publicstaticvoidmain(String[]args){newComEvento();}
}
obs: descupaê a mau organização do codigoo!
Eder_Peixoto
Seu código possui erro de sintaxe. Veja a linha que contém:
if(texto1=="frente();"){
Você está acessando uma variável (texto1) que não pertence ao escopo, ou seja, ela exista dentro do construtor ComEvento, mas não na implementação do ouvinte focusLost.
Você sabe exatamente o que faz o operador “==”? Ele não compara o conteúdo de objetos, mas sim suas referências. Ele apenas funciona para igualar conteúdo quando tratar-se de tipos primitivos, como int, double, char…
Tem certeza que utilizar focusListener é a melhor escolha? Não seria melhor combiná-lo com o pressionamento da tecla ENTER, por exemplo? Ou então criar um botão para isso?
Marcello360
1 - a do “==” eu reconheço q foi erro meu!
2 - ateh agora na faculdade so tive conhecimento desse “focusListener”, e eu queria criar um botao q quando eu o apertace ele executaria a ação na imagem.
no caso o q eu tenho q ultilizar para fazer isso?
tem como tu mandar um exemplo?
vlw
Eder_Peixoto
packageclienteditor;importjava.awt.Color;importjava.awt.event.FocusAdapter;importjava.awt.event.FocusEvent;importjava.awt.event.MouseEvent;importjava.awt.event.MouseListener;importjavax.swing.ImageIcon;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JTextField;publicclassComEventoextendsJFrame{ImageIcondanc;JLabeldanc2;intposX=0,posY=0;JTextFieldString[];publicComEvento(){super("ABC");setSize(500,500);setLocationRelativeTo(null);setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);getContentPane().setBackground(Color.BLUE);setLayout(null);JButtonbutton=newJButton("Clique Aqui");button.setBounds(410,300,100,40);button.addMouseListener(newMouseListener(){publicvoidmouseClicked(MouseEvente){}publicvoidmousePressed(MouseEvente){}publicvoidmouseReleased(MouseEvente){System.out.println("mouseReleased:"+e);updateLabel();}publicvoidmouseEntered(MouseEvente){}publicvoidmouseExited(MouseEvente){}});this.add(button);//danc = new ImageIcon( null );danc2=newJLabel("Label");//danc2.setBounds(10,10,danc.getIconHeight(),danc.getIconWidth());add(danc2);danc2.setBounds(posX,posY,50,50);add(danc2);JTextFieldtexto=newJTextField("Digite o texto!");texto.setSize(20,30);add(texto);texto.getText();Stringtexto1=texto.getText();texto.setBounds(300,300,100,100);texto.addFocusListener(newFocusAdapter(){publicvoidfocusLost(FocusEvente){System.out.println("focusEvent:"+e);updateLabel();}});}privatevoidupdateLabel(){this.danc2.setLocation(this.danc2.getLocation().x+10,this.danc2.getLocation().y+10);}publicstaticvoidmain(String[]args){newComEvento();}}
Nesse código, inclui um JButton e inclui um método que é responsável por apenas atualizar a posição do JLabel. Cada vez que o usuário "solta" o botão do mouse, ele trata o evento chamando o método "updateLabel()".