JTextField - limpar conteudo

Oi Pessoal.

Preciso da ajuda de voces. Estou estudando Java via “Como Programar em Java” do Deitel.
E eu estou com problemas em limpar minha JTextField. Eu vi aqui no forum que o pessoa coloca JTextField.setText(""); e dá certo , pois nao consegui fazer. Me ajudem por favor.

/* Applet que simula o lancamento de dois dados.

  • Deve-se haver 36000 lancamentos.
  • Use um vetor para contar o nro de vezes que cada soma possível aparece.
  • Exiba o formato de texto numa JTextArea.
  • Deve-se haver um JButton para permitir que o usuário do applet lance
  • os dados mais de 36000 vezes.
    */

package exercicios_cap07;

//Pacotes de Nucleo

//Pacotes de Extensao
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Exercicio_15 extends JApplet implements ActionListener{

JTextArea tela;
JTextField txt1;
JButton botao;
String conteudo = "";
int soma,                //recebe valor do metodo lancaDados()
    vet[] = {2,3,4,5,6,7,8,9,10,11,12},
    result[],           //guarda ocorrencias de quantos vezes cada nro saiu
    flag = 0;
boolean prijog = true;

public void init(){

    
    Container quadro = getContentPane();
    quadro.setLayout(new FlowLayout());

    tela = new JTextArea(15,70);

    txt1 = new JTextField(60);
    quadro.add(txt1);
    
    
    botao = new JButton ("Role os dados");
    botao.addActionListener(this);
    quadro.add(botao);

}

public void actionPerformed(ActionEvent e) {

    result = new int[11];

    //se não é a 1a vez q lanca os dados
    if(flag == 1) prijog = false;

    //1a vez que lança os dados
    if(prijog){

        for(int i=0; i<36; i++){      //os dados serao lancados 36000 vezes
            contaNros();
        }

        mostraTudo();
        flag = 1;
        txt1.setText(conteudo);
    }//fim if(prijog)

    //se o usuario quiser lancar mais de 36000 vezes
    if(!prijog) {

        txt1.setText("");
       // txt1.requestFocus();
        contaNros();
        mostraTudo();
        txt1.setText(conteudo);
        
    }
}

//metodo que mostra resultados obtidos
public void mostraTudo(){

    for(int a=0; a<vet.length; a++){

        conteudo += "Nro. "+vet[a]+": "+result[a]+" x " ;

    }
}

//metodo que contabiliza quantas ocorrencias teve de cada soma
public void contaNros(){

    soma = lancaDados();

    for(int x = 0; x<vet.length; x++)
      if(soma == vet[x])      result[x]++;

}

//metodo que lanca os dois dados e retorna a soma destes
public int lancaDados(){

    int d1, d2;

    d1 = 1 + (int)(Math.random()*6);
    d2 = 1 + (int)(Math.random()*6);

    return (d1+d2);
}

}//TERMINO CLASSE EXERCICIO_15

Aqui funcionou setText para Limpar o campo. :

txt1.setText("");

Obs. coloca seu codigo dentro do para ficar mais legivel.

[quote=oliveira.ti]Oi Pessoal.

Preciso da ajuda de voces. Estou estudando Java via “Como Programar em Java” do Deitel.
E eu estou com problemas em limpar minha JTextField. Eu vi aqui no forum que o pessoa coloca JTextField.setText(""); e dá certo , pois nao consegui fazer. Me ajudem por favor.

/* Applet que simula o lancamento de dois dados.

  • Deve-se haver 36000 lancamentos.
  • Use um vetor para contar o nro de vezes que cada soma possível aparece.
  • Exiba o formato de texto numa JTextArea.
  • Deve-se haver um JButton para permitir que o usuário do applet lance
  • os dados mais de 36000 vezes.
    */

package exercicios_cap07;

//Pacotes de Nucleo

//Pacotes de Extensao
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Exercicio_15 extends JApplet implements ActionListener{

JTextArea tela;
JTextField txt1;
JButton botao;
String conteudo = "";
int soma,                //recebe valor do metodo lancaDados()
    vet[] = {2,3,4,5,6,7,8,9,10,11,12},
    result[],           //guarda ocorrencias de quantos vezes cada nro saiu
    flag = 0;
boolean prijog = true;

public void init(){

    
    Container quadro = getContentPane();
    quadro.setLayout(new FlowLayout());

    tela = new JTextArea(15,70);

    txt1 = new JTextField(60);
    quadro.add(txt1);
    
    
    botao = new JButton ("Role os dados");
    botao.addActionListener(this);
    quadro.add(botao);

}

public void actionPerformed(ActionEvent e) {

    result = new int[11];

    //se não é a 1a vez q lanca os dados
    if(flag == 1) prijog = false;

    //1a vez que lança os dados
    if(prijog){

        for(int i=0; i<36; i++){      //os dados serao lancados 36000 vezes
            contaNros();
        }

        mostraTudo();
        flag = 1;
        txt1.setText(conteudo);
    }//fim if(prijog)

    //se o usuario quiser lancar mais de 36000 vezes
    if(!prijog) {

        txt1.setText("");
       // txt1.requestFocus();
        contaNros();
        mostraTudo();
        txt1.setText(conteudo);
        
    }
}

//metodo que mostra resultados obtidos
public void mostraTudo(){

    for(int a=0; a<vet.length; a++){

        conteudo += "Nro. "+vet[a]+": "+result[a]+" x " ;

    }
}

//metodo que contabiliza quantas ocorrencias teve de cada soma
public void contaNros(){

    soma = lancaDados();

    for(int x = 0; x<vet.length; x++)
      if(soma == vet[x])      result[x]++;

}

//metodo que lanca os dois dados e retorna a soma destes
public int lancaDados(){

    int d1, d2;

    d1 = 1 + (int)(Math.random()*6);
    d2 = 1 + (int)(Math.random()*6);

    return (d1+d2);
}

}//TERMINO CLASSE EXERCICIO_15

[/quote]
Amigão, primeiro de tudo posta seu código assim, que fica melhro de ver e mais facil de te ajudar :idea: :

/* Applet que simula o lancamento de dois dados.
* Deve-se haver 36000 lancamentos.
* Use um vetor para contar o nro de vezes que cada soma possível aparece.
* Exiba o formato de texto numa JTextArea.
* Deve-se haver um JButton para permitir que o usuário do applet lance
* os dados mais de 36000 vezes.
*/

package exercicios_cap07;


//Pacotes de Nucleo


//Pacotes de Extensao
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;



public class Exercicio_15 extends JApplet implements ActionListener{

JTextArea tela;
JTextField txt1;
JButton botao;
String conteudo = "";
int soma, //recebe valor do metodo lancaDados()
vet[] = {2,3,4,5,6,7,8,9,10,11,12},
result[], //guarda ocorrencias de quantos vezes cada nro saiu
flag = 0;
boolean prijog = true;

public void init(){


Container quadro = getContentPane();
quadro.setLayout(new FlowLayout());

tela = new JTextArea(15,70);

txt1 = new JTextField(60);
quadro.add(txt1);


botao = new JButton ("Role os dados");
botao.addActionListener(this);
quadro.add(botao);

}

public void actionPerformed(ActionEvent e) {

result = new int[11];

//se não é a 1a vez q lanca os dados
if(flag == 1) prijog = false;

//1a vez que lança os dados
if(prijog){

for(int i=0; i<36; i++){ //os dados serao lancados 36000 vezes
contaNros();
}

mostraTudo();
flag = 1;
txt1.setText(conteudo);
}//fim if(prijog)

//se o usuario quiser lancar mais de 36000 vezes
if(!prijog) {

txt1.setText("");
// txt1.requestFocus();
contaNros();
mostraTudo();
txt1.setText(conteudo);

}
}

//metodo que mostra resultados obtidos
public void mostraTudo(){

for(int a=0; a<vet.length; a++){

conteudo += "Nro. "+vet[a]+": "+result[a]+" x " ;

}
}

//metodo que contabiliza quantas ocorrencias teve de cada soma
public void contaNros(){

soma = lancaDados();

for(int x = 0; x<vet.length; x++)
if(soma == vet[x]) result[x]++;

}

//metodo que lanca os dois dados e retorna a soma destes
public int lancaDados(){

int d1, d2;

d1 = 1 + (int)(Math.random()*6);
d2 = 1 + (int)(Math.random()*6);

return (d1+d2);
}




}//TERMINO CLASSE EXERCICIO_15 

rapaz pelo que to entendendo vc ta setando pra ("") e depois ta sentado pra (conteudo), como quer que o campo fique limpo :?: vc ta lavando a roupa e botando pra secar na lama :shock:

//na linha 80 do seu código:
 txt1.setText("");  
 // txt1.requestFocus();  
 contaNros();  
 mostraTudo();  
 txt1.setText(conteudo); 

O ERRO está aqui.:

[code]//metodo que mostra resultados obtidos
public void mostraTudo(){
for(int a=0; a<vet.length; a++){

conteudo += "Nro. “+vet[a]+”: “+result[a]+” x " ;

}
}[/code]

Pois como você não zera oque estava no conteudo antes de fazer esta nova interação.
não vai adiantar mesmo dar o setText("") pq oq não esta zerando é justamente a variavel conteudo.

Tenta usar assim agora:

[code]//metodo que mostra resultados obtidos
public void mostraTudo(){
conteudo = “”;
for(int a=0; a><vet.length; a++){

conteudo += "Nro. “+vet[a]+”: “+result[a]+” x " ;

}
}[/code]
Com isso você nem precisará usar o setText("")

ABS…

[quote=dxos]Aqui funcionou setText para Limpar o campo. :

txt1.setText("");

Obs. coloca seu codigo dentro do para ficar mais legivel.[/quote]

Valeu companhero! Pode deixar.

[quote=Carlos_ds_jar]rapaz pelo que to entendendo vc ta setando pra ("") e depois ta sentado pra (conteudo), como quer que o campo fique limpo :?: vc ta lavando a roupa e botando pra secar na lama :shock:

//na linha 80 do seu código: txt1.setText(""); // txt1.requestFocus(); contaNros(); mostraTudo(); txt1.setText(conteudo); [/quote]

Oi!

Nao, eu fiz os IFs antes. Veja bem eu coloco o 1o IF para caso seja o 1o movimento dos dados. Logo no inicio deste metodo eu coloco
se prijog = false para caso nao seja a 1a jogada.

consiguiu ?


/* Applet que simula o lancamento de dois dados.
 * Deve-se haver 36000 lancamentos.
 * Use um vetor para contar o nro de vezes que cada soma possível aparece.
 * Exiba o formato de texto numa JTextArea.
 * Deve-se haver um JButton para permitir que o usuário do applet lance
 * os dados mais de 36000 vezes.
 */

package exercicios_cap07;

//Pacotes de Nucleo
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

//Pacotes de Extensao
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;



public class Exercicio_15 extends JApplet implements ActionListener{

    JTextArea tela;
    JTextField txt1;
    JButton botao, btapagar;
    String conteudo = "";
    int soma,                //recebe valor do metodo lancaDados()
        vet[] = {2,3,4,5,6,7,8,9,10,11,12},
        result[],           //guarda ocorrencias de quantos vezes cada nro saiu
        flag = 0;
    boolean prijog = true;

    public void init(){

        
        Container quadro = getContentPane();
        quadro.setLayout(new FlowLayout());

        tela = new JTextArea();

        txt1 = new JTextField(66);
        quadro.add(txt1);
        
        
        botao = new JButton ("Role os dados");
        botao.addActionListener(this);
        quadro.add(botao);

        btapagar = new JButton ("Apagar conteúdo");
        btapagar.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {
                txt1.setText(" ");
            }
        });

        quadro.add(btapagar);

    }

    public void actionPerformed(ActionEvent e) {

        //variaveis locais
        String nvtxt;
        int sm, sm2, nvvalor = 0, nvind, dif = 0, difresi = 0, difresf = 0;

        result = new int[11];

        //se não é a 1a vez q lanca os dados
        if(flag == 1) prijog = false;

        //1a vez que lança os dados
        if(prijog){

            for(int i=0; i<36; i++){      //os dados serao lancados 36000 vezes
                contaNros();
            }

            mostraTudo();
            flag = 1;
            txt1.setText(conteudo);

        }//fim if(prijog)

        //se o usuario quiser lancar mais de 36000 vezes
        if(!prijog) {

            sm = lancaDados();

            //pega o valor da a soma dos resultados do novo lancamento dos dados
            String pos= String.valueOf(sm);

            //acha a posicao deste na String, ja criada existente
            int ind = conteudo.indexOf(pos+":");

            //pega diferentes posicoes de acordo com o resultado da soma dos dados
            if(sm < 10){
                nvind = ind ;
                dif = 1;
                difresi = 3;
                difresf = 4 ;
            }
            else {         
                nvind = ind ;
                dif = 2;
                difresi = 4;
                difresf = difresi + 1;
            }

            //pega somente a parte corresponte ao indice na String
            nvtxt = conteudo.substring(nvind,nvind+dif);
            String nvtxt1 =  conteudo.substring(nvind);

            //pega a parte corresponte a soma dos numeros somados que estao na String
            String nvsm = conteudo.substring(nvind+difresi,nvind+difresf);

//JOptionPane.showMessageDialog(null,nvtxt1);
//JOptionPane.showMessageDialog(null,"Indice: "+nvtxt);
//JOptionPane.showMessageDialog(null,"Soma: "+nvsm);

            //transforma o valor
            nvvalor = Integer.parseInt(nvsm);
            sm2 = nvvalor + 1;
//JOptionPane.showMessageDialog(null,sm2);
            for(int cont=0; cont<vet.length; cont++){

                if(cont == sm) {result[cont] = sm2;

                }

                conteudo += "|Nro. "+vet[cont]+": "+result[cont]+" x  " ;

            }

            txt1.setText(conteudo);
        }
    }
    
    //metodo que mostra resultados obtidos
    public void mostraTudo(){

        conteudo="";
        for(int a=0; a<vet.length; a++){

            conteudo += "|Nro. "+vet[a]+": "+result[a]+" x  " ; //1 a 14

        }
    }

    //metodo que contabiliza quantas ocorrencias teve de cada soma
    public void contaNros(){

        soma = lancaDados();

        for(int x = 0; x<vet.length; x++)
          if(soma == vet[x])      result[x]++;

    }

    //metodo que lanca os dois dados e retorna a soma destes
    public int lancaDados(){

        int d1, d2;

        d1 = 1 + (int)(Math.random()*6);
        d2 = 1 + (int)(Math.random()*6);

        return (d1+d2);
    }




}//TERMINO CLASSE EXERCICIO_15


javascript:emoticon(’:arrow:’);
Pessoal, mais uma vez grato por estarem me ajudando.
Como podem ver eu alterei muito o código em comparação com o primeiro.
Vejam só eu tenho dois problemas para encerrar este exercicio:

         1) Eu criei um botão que apaga todo o conteudo do JTextField, mas ao apertá-lo ele elimina o conteudo, mas quando eu aperto o outro botão, "Role os Dados", volta um outro conteudo, mas com o anterior colado nele antes, tanto é que se vc chegar no inicio deste e apertar a seta direita ele mostra o 1o conteudo. EU QUERO UMA INSTRUÇÃO QUE ELIMINA O CONTEUDO, MAS QUANDO ROLAR OS DADOS NOVAMENTE, EU TENHO A SOMA DOS NUMEROS QUE SAIU, ADICIONADO UM A SUA FRENTE.

         2) Vejam só, para atingir o objetivo maximo deste exercicio, tenho que rolar os dados 36000 vezes e dar a possibilidade de o usuario rolar mais quantas vezes quiser. Pois bem, eu tenho uma lista de indices de 2 a 12, que sao as possiveis somas do resultados dos lancamentos dos Dados, e a frente de cada um, tem a soma de quantas vezes cada soma saiu. Simples né?

EU QUERO PODER ACRESCENTAR UM A ESSES RESULTADOS DE QTAS VEZES CADA SOMA SAIU. EU FIZ UMA GAMBIARRA PROFISSIONAL PARA TER O INDICE E O RESULTADO DESSA STRING. SE VOCÊS TIVEREM UM MEIO MAIS ELEGANTE ME PASSEM.

Obrigado pela ATENÇÃO!

vc tentou usar oque eu te mandei no post anterior ???
de fazer um:

conteudo = "";

???