Entrada de Dados com JOptionPane  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
oliveirarenan
Virtual Machine Man
[Avatar]

Membro desde: 19/03/2003 19:29:41
Mensagens: 547
Localização: São Paulo
Offline

Pessoal, tenho os seguintes programinhas básicos para se fazer um circulo com a entrada do raio pela teclado.

DesenhaCirculo.java


Circulo.java


Compilando e executando o desenhacirculo, ele pede a entrada do raio através de um JOptionPane.
Está funcionando, mas o JOptionPane entre em looping.
Como eu faço para que após a 1º entrada de dados não apareça mais a caixa de diálogo?

valeu@


Renan Espíndola de Oliveira
Desenvolvedor J2EE
[Email] [MSN] [ICQ]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Credo, não ponha entrada de dados no método paint.
Ele é chamado freqüentemente pela sua aplicação - na verdade quase toda vez que se "estraga" o desenho mostrado, por exemplo passando uma janela por cima, o método paint é chamado. Se por exemplo o JOptionPane mostrou uma janela por cima da sua aplicação, então o paint será chamado novamente (não é o JOptionPane que entrou em loop).
Ponha em outro lugar, mas não ali.
[WWW]
oliveirarenan
Virtual Machine Man
[Avatar]

Membro desde: 19/03/2003 19:29:41
Mensagens: 547
Localização: São Paulo
Offline

Qual é a sua sugestão Thiogo?

valeu

Renan Espíndola de Oliveira
Desenvolvedor J2EE
[Email] [MSN] [ICQ]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Bom, para não mexer muito no seu programa, você pode pôr um flag...
Algo que você teste antes de chamar JOptionPane. Na primeira vez que você chamar JOptionPane, sete o flag para true. Depois, se o flag estiver true, você não chama mais.

OT: Acho que o FindBugs deve, ou devia ter uma regra do tipo "Excesso de flags booleanos indica problemas". É que normalmente a gente põe um monte de flags para quebrar galhos e acaba se estrepando depois.
[WWW]
oliveirarenan
Virtual Machine Man
[Avatar]

Membro desde: 19/03/2003 19:29:41
Mensagens: 547
Localização: São Paulo
Offline

Bem, fiz o código mas ele não ficou muito funcional...
Mas, td bem....

Agora estava fazendo uma aplicação para entrar com as coordenadas de uma reta e a mesma ser desenhada.

Reta.java


DesenhaRetaSwing.java


Principal.java


Só que o JOptionPane entra em looping quando eu o chamo.

Att,



Renan

Renan Espíndola de Oliveira
Desenvolvedor J2EE
[Email] [MSN] [ICQ]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Bem-vindo ao mundo do processamento paralelo!

Como eu lhe falei, já que você insistiu em usar o Paint, está sofrendo as conseqüências. Experimente jogar o "flag = true" exatamente depois do teste, não no fim da entrada de dados.



Tem outros métodos que você poderia ter usado, acho que o pior deles era pôr no paint. Dê uma olhada em outros programas parecidos, para ver em que evento (método) é que se põe a entrada de dados.

[WWW]
oliveirarenan
Virtual Machine Man
[Avatar]

Membro desde: 19/03/2003 19:29:41
Mensagens: 547
Localização: São Paulo
Offline

Thiago, eu setei o flag antes de exibir a mensagem mas não deu certo.

Deve haver outro jeito....mas mesmo assim, obrigado!

Renan Espíndola de Oliveira
Desenvolvedor J2EE
[Email] [MSN] [ICQ]
hugonaves
Smalltalk

Membro desde: 26/03/2009 13:48:56
Mensagens: 1
Offline

to precisando de ajuda em relação a entrada de dados com o JOptionPane..

no caso de variáveis Inteiras
eu crio uma variavel string e dpois atribuo o valor dela a uma inteira..

no caso:
quant = Integer.parseInt(msg);


mas eu preciso de entrar com uma variável tipo Char

alguem tem como me ajudar?

obrigado.
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team