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.
desde ja agradeço a ajudaa!
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.
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!
cara to sem saber o q fazer! :shock:
aqui esta o codigo:
import java.awt.Color;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class ComEvento extends JFrame{
ImageIcon danc;
JLabel danc2;
int posX=0, posY=0;
JTextField String [];
public ComEvento(){
super("ABC");
setSize(500,500);
setLocationRelativeTo(null);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
getContentPane().setBackground(Color.BLUE);
setLayout(null);
danc = new ImageIcon(getClass().getResource("formiga.png"));
danc2 = new JLabel(danc);
//danc2.setBounds(10,10,danc.getIconHeight(),danc.getIconWidth());
add(danc2);
danc2.setBounds(posX, posY, 50, 50);
add(danc2);
JTextField texto = new JTextField("Digite o texto!");
texto.setSize(20,30);
add(texto);
texto.getText();
String texto1 = texto.getText();
texto.setBounds(300,300,100,100);
texto.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
if(texto1=="frente();"){
posY--;
danc2.setLocation(posX, posY);
}
}} );
}
public static void main(String[] args) {
new ComEvento();
}
}
obs: descupaê a mau organização do codigoo! 
- 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?
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
[code]package clienteditor;
import java.awt.Color;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class ComEvento extends JFrame{
ImageIcon danc;
JLabel danc2;
int posX=0, posY=0;
JTextField String [];
public ComEvento(){
super("ABC");
setSize(500,500);
setLocationRelativeTo(null);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
getContentPane().setBackground(Color.BLUE);
setLayout(null);
JButton button = new JButton( "Clique Aqui" );
button.setBounds( 410, 300, 100, 40);
button.addMouseListener( new MouseListener(){
public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
System.out.println( "mouseReleased:" + e );
updateLabel();
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
} );
this.add( button );
//danc = new ImageIcon( null );
danc2 = new JLabel( "Label" );
//danc2.setBounds(10,10,danc.getIconHeight(),danc.getIconWidth());
add(danc2);
danc2.setBounds(posX, posY, 50, 50);
add(danc2);
JTextField texto = new JTextField("Digite o texto!");
texto.setSize(20,30);
add(texto);
texto.getText();
String texto1 = texto.getText();
texto.setBounds(300,300,100,100);
texto.addFocusListener(new FocusAdapter() {
public void focusLost( FocusEvent e ){
System.out.println( "focusEvent:" + e );
updateLabel();
}
});
}
private void updateLabel(){
this.danc2.setLocation( this.danc2.getLocation().x + 10, this.danc2.getLocation().y + 10);
}
public static void main(String[] args) {
new ComEvento();
}
}[/code]
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()”.