Evento com JTextField - ultilizando uma imagem

7 respostas
Marcello360

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!

7 Respostas

Eder_Peixoto

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!

cara to sem saber o q fazer! :shock:

Eder_Peixoto

Posta teu código.

Marcello360

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! :smiley:

Eder_Peixoto
  1. 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.

  1. 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…

  2. 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
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();
    }
}

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()".

Criado 25 de outubro de 2010
Ultima resposta 25 de out. de 2010
Respostas 7
Participantes 2