Iniciando com J2ME- text field

Ola pessoal, estou iniciando estudo em J2ME escrevi um codigo para teste, estou com problema em pegar o que o usuario escreve no textfield, se puderem me ajudar.
A ideia eh qdo apertar o botao OK, aparece um ALERT com o nome da pessoa.
segue codigo:

public class Hello extends MIDlet implements CommandListener{

private Form form;
private Display display;

private Command botao_menu;
private Command botao_sair;
private Command botao_ok;


public Hello(){
	form = new Form("Hello form");
	display = Display.getDisplay(this);
	botao_menu = new Command("Menu",Command.ITEM,0);
	botao_sair = new Command("Sair", Command.EXIT,0);
	botao_ok = new Command("OK", Command.OK,0);
}

protected void startApp()  {
		form.append("hello form");
		form.addCommand(botao_menu);
		form.addCommand(botao_sair);
		form.setCommandListener(this);
		display.setCurrent(form);
}
protected void destroyApp(boolean b)  {
	
	
}

protected void pauseApp() {

	
}

public void commandAction(Command c, Displayable d) {
	[b]TextField tf = new TextField("digite seu nome:","",50,TextField.ANY);[/b]
	if(c==botao_menu){
		AlertType.INFO);	
		Form form2 = new Form("Menu");
		form2.addCommand(botao_sair);
		form2.addCommand(botao_ok);
		form2.setCommandListener(this);
		//colocando text field na tela
		[b]form2.append(tf);[/b]
		form2.setCommandListener(this);
		//display.setCurrent(alert);
		display.setCurrent(form2);
	}
	if(c==botao_sair){
		destroyApp(false);
		notifyDestroyed();
	}
	[b]if(c==botao_ok){
	Alert alert = new Alert("Titulo",tf.getString(),null, AlertType.INFO);	
	display.setCurrent(alert);
	}[/b]
	
	
}

}

Oi,

para pegar o valor digitado em um textfield utilize o tf.getText(),
e não o set.

Tchauzin!

Só tome cuidado ao pegar o valor em JSDK o correto seria que Lina disse mas em JME é diferente é seuObjeto.getString();

Não sei o prq eles modificaram isso … :shock:

desculpem me mas eu nao entendi:

[quote=“lina”] para pegar o valor digitado em um textfield utilize o tf.getText(),
e não o set. [/quote]e onde ele uso set q eu num vi

bom, primeiro eu nao sei oq é essa linha depois do if na funcao comandAction, acho q isso foi parar ai por engano entao vou ignorar

if (c == botao_menu)
{
	AlertType.INFO);  // to falando dessa linha aqui
	Form form2 = new Form("Menu"); 
	...

bom, pelo q eu vi no codigo o campo de texto só aparece qndo aperta um botao de menu, dae é criado o formulario e o campo de texto, e o botao ok serve pra mostrar o alerta com o oq foi digitado no campo de texto

mas toda vez q se aperta algum botao vc cria um novo TextField, sendo assim, o campo de texto q vc preenche logo depois de apertar o botao_menu nao é o mesmo q sera mostrado qndo vc aperta o botao_ok, ja q qndo vc aperta algum botao vc cria outro objeto

uma forma de fazer isso é declarar esse campo de texto como um objeto da classe, assim como vc fez com os objetos Comand

ah, qndo for postar codigos, coloque entre as tags [ code] e [ /code] (sem o espaço em branco) pra manter a identacao, é bem melhor pra ler

flw cara, t+

Bem gente um exemplo básico é esse que a lina deu não tem erro, faça um command para pegar oque o usuário pegou, semelhante a um send…

// ISTO É UM RESUMO DE CÓDIGO
...
String texto; // String para pegar o texto do textField
Command commandSend= new Command("Enviar",Command.OK, 1); // declaração do commandSend
....
....
//declare o command no form como vc faz normalmente, e o commandListener...
// declare o textField normalmente no form como vc faz em qualquer aplicação, quando o usuário acessar o comando "Enviar" este fará a ação de pegar os dados do textField ...

public void commandAction(Command c, Displayable d) { 
 if(d == form) {
   if(c == commandSend) {
         texto = tf.getText();
         // vc pode exibir um alert com o texto ou oque vc desejar
        }
   }
}

O que vc estava fazendo não é muito aconselhavel, vc tava declarando outro form ou seja um objeto displayble no command, é bom vc ter um .java para cada form ou “displayble” que vc fará e após disso apenas chamar ele no command para trocar de tela, assim vc tem um código mais organizado e mais legível.
Bem o exemplo esta um pouco abstrato mas não o bastante para vc fazer a implementação, desculpe pelo exemplo rudimentar, mas infelizmente estou sem tempo para fazer uma aplicação de exemplo pra vc no momento, por eu estar na faculdade nesse exato momento, mesmo assim espero ter te ajudado! qualquer coisa me mande um PM que assim que possivel vejo de te mandar uma aplicação de exemplo, mas tente implementar isso não é dificil.

Galera muito obrigado o erro era o lance da criacao do textfield.Obrigado a todos.

na parte em negrito amigo quikkoo …
x)

Dica Borborema coloque seu código entre as tags [code] e de uma olhada nesse tópico
http://www.guj.com.br/posts/list/50115.java :slight_smile:

vlw 8)

perae moçada, ceis tao me confundindo, o metodo pra pegar o conteudo de um campo de texto é o getStringe nao o getText

[quote=“lina”]na parte em negrito amigo quikkoo … [/quote]pois é moça, vc disse pra ele usar o get* ao invez de set*, mas ele nao usou set*
ao menos q o cara tenha editado o codigo asntes d eu chegar né, mas a parte em negrito esta assim:

Alert alert = new Alert("Titulo", tf.getString(), null, AlertType.INFO); 
                                     ^^^^^^^^^

mas o problema foi resolvido, entao ta bom, esqece a bagunça
flw moçada, t+

era o que queria saber !