Problema com getText() em um JTextArea

8 respostas
guilherme.dio

Boa Noite, eu estou com uma duvida, que nao consegui achar solução ainda, estou “brincando” um pouco com Swing e Awt, e fiz uma classe principal e uma secundaria que cria um JFrame, um JButton e um JTextField, todos em metodos, na Main executo o JFrame(ao qual esta no metodo construtor) e executo alguns outros metodos como criar botao, mudar o texto do botao e etc…porem eu cirei um metodo na secundaria para pegar o valor inserido no JTextField, e n sei como fazer isso.OBS: quero poder retornar o valor inserido no textfield e ao abrir esete metodo na classe Main poder realizar algumas operações.

Aqui em baixo o codigo, em vermelho esta o metodo que eu recebo erros:

CODIGO DA CLASSE SECUNDARIA

package SwingApp;

import javax.swing.<em>;

import java.awt.</em>;

public class Form extends JFrame{

public Container c;

public JButton botao;

public JTextField area;

public Form(){

setBounds(250,200,800,600);

setVisible(true);

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

c=new Container();

this.setLayout(new GridLayout());

this.add©;

}

public void addBotao(){

botao=new JButton();

botao.setBounds(300,250,100,50);

c.add(botao);

}

public void addAreaTexto(){

area=new JTextField();

area.setBounds(410,250,100,50);

c.add(area);

}

public String mudaTextoBotao(String textobotao){

botao.setText(textobotao);

return textobotao;

}

[color=red]public String valorAreaTexto(String valor){

area.getText(valor);

return valor;[/color]
}

}

CODIGO DA CLASSE PRINCIPAL

package SwingApp;

public class Main {

public static void main(String[] args) {

Form janela=new Form();

janela.setTitle(Janela 800x600 Pixels);

janela.addBotao();

janela.addAreaTexto();

janela.mudaTextoBotao(Botão);

String areatexto;

janela.valorAreaTexto(areatexto);

}

}

SE PUDEREM ME AJUDAR, EU AGRADEÇO MUITO, OBRIGADO!

8 Respostas

ViniGodoy

O getText já retorna o valor:

Não precisa criar uma função para isso.

Quando tiver dúvidas, leia a documentação:
http://download.oracle.com/javase/6/docs/api/javax/swing/text/JTextComponent.html#getText()

guilherme.dio

Entendi, obrigado.

Mas eu consigo pegar esse valor e usar na classe principal para fazer por exemplo uma soma de um valor deste TextArea com de outro TextArea e apresentar o resultado num ultimo TextArea?

é claro, transformando para float

ViniGodoy

double valor1 = Double.parseDouble(seuTextField1.getText()); double valor2 = Double.parseDouble(seuTextField2.getText()); double resultado = valor1 + valor2; setTextField2.setText(String.format("%.2f", resultado));

guilherme.dio

Obrigado novamente.

desculpa pelo incomodo, é que sou iniciante em Java, mas gosto muito, eu tento aprender sozinho, mas é dificil, quero criar essa GUI, porem é complicado pra mim, até agora só consegui por esses 3 components, mas um dia consiguirei criar algo bem mais complexo.

a proposito eu nao sei se vc vai conseguri entender, mas esse valor que esta na jTextArea, eu quero acessar pela classe Main, mas nao esta retornando nenhum valor:

public class Main {

public static void main(String[] args) {

Form janela=new Form();

janela.setTitle(Janela 800x600 Pixels);

janela.addBotao();

janela.addAreaTexto();

janela.addLabel();

janela.mudaTextoBotao(BOTÃO);

janela.mudaTextoLabel(LABEL);

double valor = 0;

[color=red]janela.valorAreaTexto(valor);

janela.mudaTextoArea("Valor = "+valor);[/color]

}

}

inclusive o NetBeans me diz que tenho que inicializar a variavel, ou seuja, nenhum valor vem do metodo valorAreaTexto:

public double valorAreaTexto(double [color=red]valor1[/color]){
    double [color=red]valor1[/color] = Double.parseDouble(area.getText()); 
    return [color=red]valor1[/color];
}

inclusive como pode ver, esta dando erros, pois o NetBeans me diz que o valor1 ja foi definido anteriormente

ViniGodoy

Por favor, quando for postar códigos, use a tag code:
http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor

As regras para uma aplicação gráfica são as mesmas do que para uma aplicação não gráfica. Ou seja, se você quiser usar uma variável, vai ter que declara-la. Se você nunca declarou a variável valor, não poderá usa-la.

Além disso, o programa continua rodando de maneira sequencial. Quando você faz um setText, vai definir o texto para o que tiver na variável valor naquele momento. Se quiser que sempre que um dos textos seja alterado a variável seja também, terá que programar a mudança num evento.

guilherme.dio

ok, mas poruqe a variavel fika mesmo qdo eu defino um valor ja dentro do codigo pra jTextArea, e tento pegar esse valor a apresentar numa Label por exemplo.

guilherme.dio

guilherme.dio:
ok, mas poruqe a variavel fika mesmo qdo eu defino um valor ja dentro do codigo pra jTextArea, e tento pegar esse valor a apresentar numa Label por exemplo.

Corrigindo:

ok, mas porque a variavel fica nula mesmo qdo eu defino um valor ja dentro do codigo pra jTextArea, e tento pegar esse valor a apresentar numa Label por exemplo.

guilherme.dio

Nossa, eu realmente quero agradecer aos usuários do GUJ !

Após 1 ano e 2 mêses de uso deste fórum magnífico, vejo o quanto evoluí, através das dúvidas que postei e foram muito bem respondidas e auxiliadas por muitas pessoas dedicadas que utilizam este sistema.

Estou postando isso em meu primeiro tópico, porque hoje vejo e dou risada das dúvidas “rdículas” que eu tinha antigamente, como é o exemplo deste “problema” que dexei exposto nessa discussão do tópico.

Quero agradecer duas pessoas em potencial, que são muito esforçadas:

O Viny Godoy e o Marky Vasconcelos, que sempre foram muito atenciosos e me ajudaram muito em várias dúvidas e desafios que tive nesse meio tempo.

Atenciosamente,

Guilherme.

Criado 6 de março de 2011
Ultima resposta 15 de mai. de 2012
Respostas 8
Participantes 2