Bug do java ou Bug do Programado...?  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
brlima
Moderador
[Avatar]

Membro desde: 12/05/2003 14:03:38
Mensagens: 1537
Localização: São Paulo - SP
Offline

To com esse codigo aqui que tá me dando um banho: Tá exibindo duas vezes a mensagem.

Acho que deveria exibir só uma. Ao menos exibia até a versao 1.4.1, já na 1.4.2_04 tá exibindo 2 vezes.
Alguem pode me dar uma luz?

É o seguinte: O foco entra no Text1. Qdo vc passa pro text2, ele deveria exibir uma mensagem e voltar o foco pro 1.

Codigo:

Bruno R. Lima
-------------------------------------------
flickr :: twitter
[MSN]
brlima
Moderador
[Avatar]

Membro desde: 12/05/2003 14:03:38
Mensagens: 1537
Localização: São Paulo - SP
Offline

Uma ajuda a um rapaz desesperado...!!!...rs

Bruno R. Lima
-------------------------------------------
flickr :: twitter
[MSN]
dsiviotti
Virtual Machine Man
[Avatar]

Membro desde: 19/01/2004 01:35:23
Mensagens: 541
Localização: Rio de Janeiro
Offline

Se você tirar o código:

funciona. A mensagem só aparece uma vez. O porquê é um mistério!

Douglas Siviotti
[Email] [WWW] [Yahoo!] [ICQ]
brlima
Moderador
[Avatar]

Membro desde: 12/05/2003 14:03:38
Mensagens: 1537
Localização: São Paulo - SP
Offline

dsiviotti wrote:Se você tirar o código:

funciona. A mensagem só aparece uma vez. O porquê é um mistério!


Mas é que eu forço o foco continuar no campo 1... nao pode sair...

Bruno R. Lima
-------------------------------------------
flickr :: twitter
[MSN]
dukejeffrie
Virtual Machine Man
[Avatar]

Membro desde: 21/08/2002 03:53:28
Mensagens: 661
Offline

Bom... eu acho que vc tem que testar se a origem do evento é o field1...

do javadoc do 1.4:

getOppositeComponent

public Component getOppositeComponent()

Returns the other Component involved in this focus change. For a FOCUS_GAINED event, this is the Component that lost focus. For a FOCUS_LOST event, this is the Component that gained focus. If this focus change occurs with a native application, with a Java application in a different VM or context, or with no other Component, then null is returned.

Returns:
the other Component involved in the focus change, or null
Since:
1.4


Acho que os dois recebem FOCUS_GAINED...

boa sorte!
[]s

Brevity is the soul of wit
[Email] [WWW] [MSN] [ICQ]
brunufal
Thread.start()

Membro desde: 02/08/2005 15:37:04
Mensagens: 25
Offline

Pessoal, eu também tô com um problema desses. É o seguinte:
Tenho vários DBTextField, e faço uma validação de campo vazio no evento focusLost. O problema é que após o campo perder o foco, ele entra no foco do campo seguinte, que também está vazio, e só depois dispara o evento de validação. Quando ele verifica que o campo que perdeu o foco tá vazio, ele volta o foco para ele, provocando uma outra chamada para o evento de validação do último campo que o foco estava, por isso a mensagem é exibida duas vezes. Se o campo mudasse de foco somente quando fosse validado, isso não aconteceria. No delphi isso funciona assim, o foco só muda de campo, após o evento discarado pela perda do foco ser executado. Dessa forma, podemos garantir que o foco só muda de campo quando o campo for validado. Alguém sabe como fazer isso em Swing?

Bruno Barros.
brlima
Moderador
[Avatar]

Membro desde: 12/05/2003 14:03:38
Mensagens: 1537
Localização: São Paulo - SP
Offline

Pra resolver esse problema, eu tive que validar o campo quando outro componente ganhasse foco, e nao ao perder o foco.
Foi a unica ideia que tive pra minha situacao.

Flw.

Bruno R. Lima
-------------------------------------------
flickr :: twitter
[MSN]
Sami Koivu
Virtual Machine Man
[Avatar]

Membro desde: 16/09/2004 09:49:27
Mensagens: 574
Localização: Curitiba-PR
Online

Olá todos,

Hum.. se na verdade o que vocês querem é validação, que tal usar o mecanismo do InputVerifier que - pelo que entendo - é para isso mesmo?

Esse exemplo não deixa o usuário sair do campo field1 se está vazio:


O método verify do seu InputVerifier vai ser chamado quando o usuário tente sair do campo. E se o metodo retornar "false" o componente não perde foco.

Mais informações:
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/InputVerifier.html

Abraços,
Sami

PS.
[comentário-inútil-e-não-é-pra-levar-sério-demais]
Eu não gosto desse tipo de validação que não me deixa sair do campo. Tenho ataques de raiva quanda minha liberdade fica assim limitado
Por favor, pense nas foquinhas que escapam o monstruoso Struts e ai ficam presos num campo destes. Triste
Mas tudo bem, há situações que necessitam isso.
[/comentário-inútil-e-não-é-pra-levar-sério-demais]

This message was edited 1 time. Last update was at 03/08/2005 06:15:52


(Slightly) Random Broken Thoughts on Java Security
[Email] [WWW] [Yahoo!] [MSN]
brlima
Moderador
[Avatar]

Membro desde: 12/05/2003 14:03:38
Mensagens: 1537
Localização: São Paulo - SP
Offline

Realmente, esse negocio de prender o foco eu tb nao sou muito fã.

Tive um problema com teu codigo: StackOverFlow ao exibir a mensagem em um JOptionPane.

É normal isso ?

Bruno R. Lima
-------------------------------------------
flickr :: twitter
[MSN]
Sami Koivu
Virtual Machine Man
[Avatar]

Membro desde: 16/09/2004 09:49:27
Mensagens: 574
Localização: Curitiba-PR
Online

Ah.. desculpas. Não é normal, não. Só testei com java1.5 aparentemente. Aí funcionou.

Com 1.4 tenho o mesmo problema.

Abrir o JOptionPane deve gerar outro evento de verify.. que cria mais um... etc

Parece ser por causa deste bug aqui:
http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=7cd883a12d3c28aa6acb4bc62f03:YfiG?bug_id=4532517

Então, usando o workaround para 1.4 citado na descrição do bug:



Este aqui funcionou até com java 1.4

Abraços,
Sami

(Slightly) Random Broken Thoughts on Java Security
[Email] [WWW] [Yahoo!] [MSN]
 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team