Filas

19 respostas
R

Boa noite,

Gostaria de uma ajuda neste código:

public void actionPerformed(ActionEvent e)
  {  
  Queue<String> fila = new LinkedList<String>();
  
   if(e.getSource()==b1) 
   {
         	fila.offer(Tx1.getText()); 
      	System.out.println(fila);
      	
      	Tx2.setText("1");// aqui está o problema, não consigo efetuar a soma neste campo, toda vez que incluo um nome na fila, como faço?
   }

Obrigado,

Ramon
}

19 Respostas

C

Não entendi sua duvida, nessen trecho de código vc ta setando o valor 1 para o Tx2. Aonde está a soma?

Bruno

R

Corvão,

Fiz um teste para ver se retorna alguma coisa neste campo Tx2, mas não sei como incluir uma soma todas as vezes eu incluir um nome na fila, será que deu para entender?

Valeu,

Ramon

R

entao vc tem q pegar o valor do Tx2, parsear para algum tipo numérico, e só depois somar e devolver o valor para o campo:

double total = Double.parseDouble(tx2.getText()); double valor = Double.parseDouble(tx1.getText()); total +=valor; tx2.setText(total);
é isso?

R

Olá, Rissato

Implementei este trecho em meu programa, mas ele não funcionou apareceu uma mensagem de erro:

110: setText(java.lang.String) in javax.swing.text.JTextComponent cannot be applied to (double)
Tx2.setText(total);

Grato,

Ramon

V

double total = Double.parseDouble(tx2.getText()); double valor = Double.parseDouble(tx1.getText()); total +=valor; tx2.setText( String.valueOf(total) );

Converta o teu valototal para String.

tx2.setText( String.valueOf(total) );
R

Obrigado, Vitor

Vou testar!

Ramon

R

Olá, vitor

usei o código abaixo, mas não funcionou, não efetua a soma; o mais estranho disso tudo é que todas as vezes que clico no botão b1 ele parece limpar os elementos da fila(fila) e então ao solicitar o total ele não retorna, dá erro!

olha como ficou:

public void actionPerformed(ActionEvent e)

{

Queue fila = new LinkedList();
if(e.getSource()==b1)

{

fila.offer(Tx1.getText()); // adicionar elemento na fila

JOptionPane.showMessageDialog(null,fila,“teste”,1);// quero listar todos os elementos contidos na fila, mas ao clicar várias vezes ele só lista 1 elemento, o atual.
Integer total = Integer.parseInt(Tx2.getText());
Integer valor = Integer.parseInt(Tx1.getText());
total +=valor;
	
Tx2.setText(String.valueOf(total)); // aqui deveria ser a soma de todos o elementos da fila, mas não consigo implementar.

}

Grato pela atenção,

Ramon

R

Bom dia,

será que alguém pode verificar este código acima? não estou encontrando o erro!!!

Grato,

Ramon

M

Eu acho que estou vendo um primeiro problema aí com a seguinte linha:

Queue<String> fila = new LinkedList<String>();

Perceba que vc colocou essa linha dentro do método actionPerformed(). Isto quer dizer que, toda hora que vc clicar no botão, vai ser criada uma nova fila, perdendo assim possíveis valores anteriores.
O ideal seria você deixar esta fila ser um campo da classe e não dar new emcima desse campo dentro do actionPerformed()
Vou tentar fazer uma simulação desse seu problema aqui e, conseguindo, eu posto aqui, ok?

M

Olha aí, fiz um exemplo pronto pra rodar.
Dê uma olhada e vê se te ajuda em algo.

R

Mantu,

obrigado ficou jóia!!!

Só para finalizar, o programa Painel_Recepção é onde vc inclui o nome de um paciente na fila e com sua ajuda consegui fazer com que efetue o tamanho(soma) da fila.
Então, criei outro programa painel_doenças em que faço a consulta(médico) e a dúvida é a seguinte: como faço para que este painel_doenças lê a fila do painel_recepção? tentei fazer mas não consegui, afinal vc me explicou que se eu instanciar a fila neste painel_doenças significa que vou cria tudo novamente, certo? E como faço para que ele possa ler os dados da fila criada em painel_recepção?

Grato,

Ramon

obs:. será que deu para entender?

M

Faça com que a classe Painel_Recepcao tenha um método que retorne justamente a fila em questão.
Que tal?

R

Mantu,

não consegui entender? O painel _Recepção é onde foi criado a variável fila e quero usar em outro painel, sem que seja criado uma nova variável, pq vc me explicou que ao criar uma nova ele apaga tudo, correto?
qual é o comando que devo escrever neste trecho abaixo, que é uma parte de outro painel:

if(e.getSource()==b2)

{

// chama o nome da fila
fila2.offer(Tx1.getText()); // adicionar elemento na fila
  	System.out.println(fila2);
  	
  	Tx3.setText(String.valueOf(fila2.size()));// quero usar a vaiável fila2 para consulta.
 	Tx1.setText("");
  	
  	JOptionPane.showMessageDialog(this,"Paciente fulano de tal");

}

como devo proceder?

valeu,

Ramon

M

Deixa eu ver se entendi:
Painel_Recepcao é uma classe e Painel_Doencas é outra classe, certo?

R

Isso mesmo!!!

R

Tem alguma forma de usar a vaiável fila em outra classe(painel_doencas), pois sei que a variável fila está na classe Painel_Recepcao? Apenas quero listar o 1º elemento na campo Tx1 da classe painel_doencas!

if(e.getSource()==b2)
{

fila2.peek(Tx1.getText());
  	System.out.println(fila2);
  	
  	Tx3.setText(String.valueOf(fila2.size())); 	
  	Tx1.setText("");
  	
  	JOptionPane.showMessageDialog(this,"Paciente fulano de tal");

}

R

Alguém pode me dar um help???

Grato,

Ramon

M

Experimenta fazer ago assim:
Sua classe Painel_Recepcao teria que, de alguma forma, disponibilizar a fila. A forma mais trivial de se fazer isso é criar um método público que retorne a fila, ou uma cópia da fila:

class Painel_Recepcao{
	...
	private Queue<String> fila = new LinkedList<String>();
	...
	public Queue<String> getQueueCopy(){
		return new LinkedList<String>(fila);
	}
	...
}

Agora, antes de continuar com essa solução, preciso que vc me esclareça mais algumas dúvidas:
1)Como são os construtores da classe Painel_Recepcao?
2)Você cria uma instância de Painel_Doecas “de dentro” da classe Painel_Recepcao?

R

Mantu,

qual é o seu e-mail, assim posso lhe mandar o programa, ok?

Grato,

Ramon

Criado 10 de outubro de 2006
Ultima resposta 13 de out. de 2006
Respostas 19
Participantes 5