While

8 respostas
M

Olá pessoal.

Por favor, ajudem-me:

Meu problema é o seguinte, eu estou tentando fazer com que, enquanto um input estiver vazio, um button fique desabilitado.
Eu tento com este código:

while(input.getText().equals(null))
     {
    	 iniciar.setEnabled(false); 
     }

Mas não funciona. :confused:
O Button continua igual

OBS:
Input é o input.
Iniciar é o nome do button.

O que fazer?

Agradeço desde já!

8 Respostas

Nicolas_Fernandes

Olá, Mijuaho!

Cara, procure sobre o evento ChangeListener (se não estou enganado), para as JTextFields.

Coloque esse código com um “if” ao invés de “while”, no ChangeListener, e teste.

Não se esqueça de dar um reply pra gente!

Espero ter ajudado!

[]'s

CrOnNoS

EDIT: não ia funcionar =x

M

Nicolas Fernandes:
Olá, Mijuaho!

Cara, procure sobre o evento ChangeListener (se não estou enganado), para as JTextFields.

Coloque esse código com um “if” ao invés de “while”, no ChangeListener, e teste.

Não se esqueça de dar um reply pra gente!

Espero ter ajudado!

[]'s

iniciar.addChangeListener(new ChangeListener() {
    	    public void stateChanged(ChangeEvent e) {
    	    	  if(input.getText().equals(null))
    	    	     {
    	    	    	 iniciar.setEnabled(false); 
    	    	     }

mais ou menos isso?

Dá erro no ChangeListener…

ChangeListener cannot be resolved as a type!

C

kra, um JText quando está vazio retorna null mesmo?
ele nao poderia retornar “” (string vazia)?
(não tenho ctz o que retorna um JText vazio…)
sou iniciante este eh meu primeiro post :smiley:

pedroroxd

Tenta algo do tipo:

while(input.getText().equals("")) { iniciar.setEnabled(false); }

Nicolas_Fernandes

Mijuaho:

iniciar.addChangeListener(new ChangeListener() {
    	    public void stateChanged(ChangeEvent e) {
    	    	  if(input.getText().equals(null))
    	    	     {
    	    	    	 iniciar.setEnabled(false); 
    	    	     }

mais ou menos isso?

Dá erro no ChangeListener…

ChangeListener cannot be resolved as a type!

Cara, pode não ser o ChangeListener o evento necessário.
Procure, então, um evento similar a este.

O que acontece é o seguinte. Quando o texto da sua JTextField for alterado, ele seta como true, certo?

// Dentro do método específico do evento que estamos procurando
if (myTextField.getText().isEmpty()) {

   myButton.setEnabled(false);
}
else {
   
   myButton.setEnabled(true);
}

Se não é o ChangeListener, é um muito parecido!

Espero ter ajudado!

[]'s

Marky.Vasconcelos

Normalmente o método equals é implementado com

public boolean equals(Object other){
if(other == null) return false;
//mais comparações
}

Então equals(null) é sempre false.

E se a String que for comparada com null realmente for null ela não lança true ela lança um NullPointerException por acessar o método de um objeto null.

Então se quiser ver se ela vazia faça como os amigos ai disseram.

boolean vazia = str.isEmpty();
boolean vazia = str.lenght() == 0;//Versão antes de existir o isEmpty para classe String

Usar “equals(”")" não é o melhor caminho pois ele faz muitas comparações desnecessarias que mudam o tempo pra executar isso.
É quase insignificante a diferença mas eu já testei em um for fazendo Long.MAX_VALUE comparações e a diferença de execução mudou bastante.

renamed

Faça o seguinte...

public class Princ extends JFrame implements KeyListener{
	
	JTextArea texto = new JTextArea();	
	JButton botao = new JButton("Clica aqui!");
	Component c;
	public Princ(){
		super("aaa");
		c = getContentPane();
		
		add(texto);
		add(botao);
		setLayout(null);
		
		texto.setBounds(10,10,100,30);
		botao.setBounds(10, 50, 120, 30);
		texto.addKeyListener(this);
		
		botao.setEnabled(false);
		setVisible(true);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setBounds(10,10,300,300);
		
	}
	public static void main(String[] args) {		
		new Princ();	
	}
	
	public void keyReleased(KeyEvent event) {
		
		if (texto.getText().length() == 0){
			botao.setEnabled(false);
		}else{
			botao.setEnabled(true);
		}
	}
	public void keyTyped(KeyEvent event) {
		
	}
	
	public void keyPressed(KeyEvent event) {

	        	
	}
}

Eu coloquei um actionListener na caixa de texto e toda vez que alguem digita uma tecla ele valida se o tamanho do texto na caixa de texto é maior que zero, se for ele habilita o botao, se nao ele o desabilita.

Criado 19 de setembro de 2009
Ultima resposta 23 de set. de 2009
Respostas 8
Participantes 7