Completar TextArea quando apaerta um botão

4 respostas
oitathi

Olá, eu tenho uma JTextArea, que recebe linhas de um arquivo a casa 7 segundos. Eu preciso que cada linha que chega seja adicionada nessa TextArea, e eu também preciso que quando um boão for pressionado, apareça um texto na TextArea, indicando q o botão foi pressionado. O código que eu fiz, até recebe assas linhas e as adiciona a cada 7 segundos, mas o problema é q quando eu clico em um botão, tanto essas linhas, como a mensagem dizendo que o botão foi pressionado, aparecem duas vezes. Vcs fazem idéia do pq?

private String line="";

//no construtor
  this.bt1=bt1;
  bt1.setSize(100,28);
  bt1.setLocation(42,465);
  add(bt1);
  bt1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
           line=line+"\n"+" Botao "+act1.toUpperCase()+" foi pressionado";
            completaArea(line);
      }
 });


public void completaArea(String dados){
    line=line+"\n"+dados;
    area.setText(line);
 }

4 Respostas

Talius

Boa tarde!

A sua String line é global e está duplicando o valor porque você está fazendo a concatenação duas vezes.

Tanto na linha 10 como na linha 17.
Tente retirar a linha 10 que deve funcionar.

oitathi

Mas vc diz retirar a linha 10 inteira? Pq se eu fizer isso, como é que passo pra JTextArea a frase: O botão tal foi pressionado?

Talius

Em vez de concatenar ali na linha 10, passe como parâmetro pro método completaArea() o valor que você quer concatenar.

private String line="";  
  
//no construtor  
  this.bt1=bt1;  
  bt1.setSize(100,28);  
  bt1.setLocation(42,465);  
  add(bt1);  
  bt1.addActionListener(new ActionListener() {  
      public void actionPerformed(ActionEvent e) {  
           String value = "\nBotao "+act1.toUpperCase()+" foi pressionado";  
           completaArea(value);  
      }  
});  
  
  
public void completaArea(String dados){  
    line=line+"\n"+dados;  
    area.setText(line);  
}
oitathi

Ah, era isso mesmo!!!
Valeu

Criado 28 de julho de 2010
Ultima resposta 28 de jul. de 2010
Respostas 4
Participantes 2