<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Últimas mensagens do tópico "Disparar o  focusLost e cancelar o FocusGained [Resolvido de outra maneira, mas resolvido]"]]></title>
		<link>http://www.guj.com.br/posts/list/5.java</link>
		<description><![CDATA[Últimas mensagens enviadas no tópico "Disparar o  focusLost e cancelar o FocusGained [Resolvido de outra maneira, mas resolvido]"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>Disparar o  focusLost e cancelar o FocusGained [Resolvido de outra maneira, mas resolvido]</title>
				<description><![CDATA[ Pessoal, preciso que, quando um componente vai perder o foco, caso ele não esteja validado, o foco volte pra ele, mas sem passar para o outro componente, entenderam?<br /> <br /> É que o FocusGained do outro componente tem código que não deveria ser executado caso o primeiro campo não estivesse validado. Então não posso dar um simples requestFocus, alguém tem alguma idéia que possa me ajudar?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197694/992222/disparar-o--focuslost-e-cancelar-o-focusgained-resolvido-de-outra-maneira-mas-resolvido
</guid>
				<link>http://www.guj.com.br/prepost/197694/992222/disparar-o--focuslost-e-cancelar-o-focusgained-resolvido-de-outra-maneira-mas-resolvido
</link>
				<pubDate><![CDATA[Mon, 8 Feb 2010 17:38:27]]> GMT</pubDate>
				<author><![CDATA[ VantuilJose]]></author>
			</item>
			<item>
				<title>Disparar o  focusLost e cancelar o FocusGained</title>
				<description><![CDATA[ [code]<br /> event.consume();<br /> [/code]]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197694/992373/disparar-o--focuslost-e-cancelar-o-focusgained
</guid>
				<link>http://www.guj.com.br/prepost/197694/992373/disparar-o--focuslost-e-cancelar-o-focusgained
</link>
				<pubDate><![CDATA[Tue, 9 Feb 2010 08:15:21]]> GMT</pubDate>
				<author><![CDATA[ Marky.Vasconcelos]]></author>
			</item>
			<item>
				<title>Re:Disparar o  focusLost e cancelar o FocusGained</title>
				<description><![CDATA[ Mark_Ameba, a classe java.awt.event.FocusEvent não tem o método consume();<br /> <br /> consume() é definido AWTEvent, mas o acesso à ela é protegido. O FocusEvent não permite que esse método seja invocado. Se eu fizer cast para o tipo AWTEvent isso funcionaria? ou o evento de foco não pode ser consumido?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197694/992402/redisparar-o--focuslost-e-cancelar-o-focusgained
</guid>
				<link>http://www.guj.com.br/prepost/197694/992402/redisparar-o--focuslost-e-cancelar-o-focusgained
</link>
				<pubDate><![CDATA[Tue, 9 Feb 2010 08:56:58]]> GMT</pubDate>
				<author><![CDATA[ VantuilJose]]></author>
			</item>
			<item>
				<title>Re:Disparar o  focusLost e cancelar o FocusGained</title>
				<description><![CDATA[ O cast não funciona né! Mudar o tipo não resolve o problema...<br /> Apenas classes do pacote podem acessá-lo, o que eu posso fazer existe uma alternativa pra isso?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197694/992404/redisparar-o--focuslost-e-cancelar-o-focusgained
</guid>
				<link>http://www.guj.com.br/prepost/197694/992404/redisparar-o--focuslost-e-cancelar-o-focusgained
</link>
				<pubDate><![CDATA[Tue, 9 Feb 2010 08:59:45]]> GMT</pubDate>
				<author><![CDATA[ VantuilJose]]></author>
			</item>
			<item>
				<title>Disparar o  focusLost e cancelar o FocusGained</title>
				<description><![CDATA[ Ahh.. nao tinha reparado nisso.<br /> <br /> Voce pode acessar por Reflection mas acho inviavel.<br /> <br /> Talvez voce pode pensar em outra solução.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197694/992496/disparar-o--focuslost-e-cancelar-o-focusgained
</guid>
				<link>http://www.guj.com.br/prepost/197694/992496/disparar-o--focuslost-e-cancelar-o-focusgained
</link>
				<pubDate><![CDATA[Tue, 9 Feb 2010 10:32:17]]> GMT</pubDate>
				<author><![CDATA[ Marky.Vasconcelos]]></author>
			</item>
			<item>
				<title>Re:Disparar o  focusLost e cancelar o FocusGained</title>
				<description><![CDATA[ Oi,<br /> <br /> Trambique:<br /> <br /> Caso o componente não esteja validado, lancar uma exceção (criado por vc) do tipo: NoFocusChangeSignException que irá ser tratada para dar um requestFocus no componente atual de conteudo não valido.<br /> <br /> No FocusGained do outro componente, verifique se ocorreu uma exceção anterior. Se sim, não faz nada. Se não, faz o que deveria ser feito.<br /> <br /> Tchauzin!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197694/992532/redisparar-o--focuslost-e-cancelar-o-focusgained
</guid>
				<link>http://www.guj.com.br/prepost/197694/992532/redisparar-o--focuslost-e-cancelar-o-focusgained
</link>
				<pubDate><![CDATA[Tue, 9 Feb 2010 11:03:52]]> GMT</pubDate>
				<author><![CDATA[ lina]]></author>
			</item>
			<item>
				<title>Re:Disparar o  focusLost e cancelar o FocusGained</title>
				<description><![CDATA[ Pois é lina, eu estava evitando os trambiques, heheheehe<br /> Ainda mais esses que eu tenho que implementar no código no FocusGained..<br /> É que eu tenho uma classe que faz essa validação baseada em código que eu passo pra ele o evento e uma condição pra que ele analise, com isso eu economizo muito código...<br /> Esse trambique que você sugeriu é melhor do que alguns que eu tinha pensado... Se não houver outro jeito, fico com ele mesmo, heheheehe]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197694/992603/redisparar-o--focuslost-e-cancelar-o-focusgained
</guid>
				<link>http://www.guj.com.br/prepost/197694/992603/redisparar-o--focuslost-e-cancelar-o-focusgained
</link>
				<pubDate><![CDATA[Tue, 9 Feb 2010 12:43:33]]> GMT</pubDate>
				<author><![CDATA[ VantuilJose]]></author>
			</item>
			<item>
				<title>Re:Disparar o  focusLost e cancelar o FocusGained</title>
				<description><![CDATA[ O que a acontece é o seguinte, essa classe de validação tem um HashMap com Component e Mensagem(String), tenho um método verifica, onde eu passo a condição, o evento e a mensagem. Esse método é invocado quando o componente perde o foco.<br /> Se a condição for verdadeira, significa que eu tenho um erro então adiciono o componente junto com a mensagem no HashMap. E volto o foco pro componente que gerou o evento.<br /> [b]O Problema: Se [/b] <img src="http://www.guj.com.br/images/smilies/c30b4198e0907b23b8246bdd52aa1c3c.gif" border="0"> Se o próximo componente for um componente que também tem um verificaErro no focusLost, ele ganha o foco,e é invalidado (pinta a borda de vermelho e mostra uma mensagem em um label), então um campo que ainda nem recebeu dados é considerado como errado...  <br /> Não é um problema muito sério já que o usuário vai passar por lá novamente, mas não era exatamente isso que eu queria...]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197694/993055/redisparar-o--focuslost-e-cancelar-o-focusgained
</guid>
				<link>http://www.guj.com.br/prepost/197694/993055/redisparar-o--focuslost-e-cancelar-o-focusgained
</link>
				<pubDate><![CDATA[Wed, 10 Feb 2010 08:33:51]]> GMT</pubDate>
				<author><![CDATA[ VantuilJose]]></author>
			</item>
			<item>
				<title>Re:Disparar o  focusLost e cancelar o FocusGained</title>
				<description><![CDATA[ Resolvi de outra maneira,<br /> Realmente não consegue cancelar o evento, me parece que o consume() apenas pode ser utilizado em InputEvent, e ele consume o evento mesmo, tipo, se vc cancela um tipo de InputEvent, os ouvintes do seus InputEvent deixam de receber os evento, me corrijam se eu estiver errado.<br /> <br /> Então inventei uma gambiarrazinha na minha classe, se interessar a alguém:<br /> <br /> [code]<br /> <br /> package zcm.swing;<br /> <br /> import java.awt.Color;<br /> import java.awt.Component;<br /> import java.awt.event.FocusAdapter;<br /> import java.awt.event.FocusEvent;<br /> import java.awt.event.FocusListener;<br /> import java.util.HashMap;<br /> import java.util.Set;<br /> import javax.swing.Icon;<br /> import javax.swing.JComponent;<br /> import javax.swing.JOptionPane;<br /> import javax.swing.JTextField;<br /> import javax.swing.border.Border;<br /> import javax.swing.border.LineBorder;<br /> <br /> /**<br />  *<br />  * @author Desenvolvimento<br />  */<br /> public class ZErrorLabel extends javax.swing.JLabel {<br /> <br />     private Border bordaNormal;<br />     private Border bordaErro;<br />     private boolean isInValidation=false;<br /> <br />     private HashMap&lt;JComponent,String&gt; listaErros;//HashMap com os componentes mapeando as mensagens - (sem ordem)<br />    <br /> <br />     private FocusListener focusListener;<br /> <br />     public void setBordaErro(Border bordaErro) {<br />         this.bordaErro = bordaErro;<br />     }<br /> <br />     public void setBordaNormal(Border bordaNormal) {<br />         this.bordaNormal = bordaNormal;<br />     }<br /> <br />     public ZErrorLabel() {<br />         super();<br />         configuraZErrorLabel();<br />     }<br /> <br />     public ZErrorLabel(Icon image) {<br />         super(image);<br />         configuraZErrorLabel();<br />     }<br /> <br />     public ZErrorLabel(Icon image, int horizontalAlignment) {<br />         super(image, horizontalAlignment);<br />         configuraZErrorLabel();<br />     }<br /> <br />     public ZErrorLabel(String text) {<br />         super(text);<br />         configuraZErrorLabel();<br />     }<br /> <br />     public void configuraZErrorLabel(){<br />                 initComponents();<br />         listaErros = new HashMap&lt;JComponent, String&gt;();<br />         focusListener = new FocusAdapter() {<br />             @Override<br />             public void focusGained(FocusEvent e) {<br />                     ZErrorLabel.this.setText(listaErros.get(e.getSource()));<br />                     isInValidation=false;<br />                 }<br />             };<br />         //Define bordas padrões<br />         bordaErro = new LineBorder(new Color(255, 100, 100));<br />         bordaNormal = (new JTextField()).getBorder();<br />     }<br /> <br /> <br /> <br />     public boolean componenteTemErro(JComponent c){<br />         return listaErros.get(c) != null;//Retorna se o erro associado ao componente é nulo<br />     }<br /> <br />     public String addError(JComponent componente, Component opositeComponente, String mensagem) {<br />     <br />         if (listaErros.containsKey(componente)) {<br />             return "Erro já cadastrado";<br />         } else {<br />                        isInValidation =true;<br />             this.setVisible(true);<br />             this.setText(mensagem);<br />             String iretorno = listaErros.put(componente, mensagem);<br />             //c.removeFocusListener(focusListener);//Removo o listener para evitar que exista mais de um            <br /> <br />             //REtira os ouvintes de foco do componente oposto para que o foco volte para o campo sem maiores problemas<br /> <br />             componente.setBorder(bordaErro);<br />             if (!listaErros.containsKey(opositeComponente)) componente.requestFocusInWindow();//Só requere o foco caso o componente oposto não esteja em<br />             componente.addFocusListener(focusListener);<br /> <br />             <br /> <br />             return iretorno;<br />         }<br /> <br />     }<br /> <br />     public void removeAllErrors() {<br />         Set&lt;JComponent&gt; set = listaErros.keySet();<br />         for (JComponent c : set) {<br />             c.setBorder(bordaNormal);<br />             c.removeFocusListener(focusListener);<br />             this.setVisible(true);<br />             this.setText("");<br />         }<br />         listaErros.clear();<br />     }<br /> <br />     public String removeError(JComponent c) {<br />         if (listaErros.containsKey(c)) {<br />             c.setBorder(bordaNormal);<br />             this.setVisible(false);<br />             String iRetorno = listaErros.remove(c);<br />             c.removeFocusListener(focusListener);<br />             if (!(listaErros.isEmpty())) {<br />                 this.setVisible(true);<br />                 this.setText("");<br />             }<br />             return iRetorno;<br />         }<br />         return "Elemento não adicionado";<br />     }<br /> <br />     public boolean verificaError(boolean conditionError, JComponent componente, Component opositeComponente, String msg){<br />        if(isInValidation==false){<br />  <br />             this.setText("");<br />             if (conditionError==true){<br />                 addError(componente,opositeComponente, msg);<br />                 return true;<br />             }<br />             removeError(componente);<br />        }<br />         return false;<br />     }<br /> <br /> <br />     //False se não houver erros<br />     public boolean existeErros(){<br />         if (listaErros.isEmpty()) return false;<br />         else{<br />             <br />         }<br />         return true;<br />     }<br /> <br />     public void mostraMensagemPadrao(Component c){<br />         JOptionPane.showMessageDialog(c, "Existem campos com erros!\nOs campo errados estão destacados, você deve corrigí-los e então tentar salvar novamente.\nVocê pode ver qual é o erro clicando no campo destacado", "Campos Inválidos", JOptionPane.WARNING_MESSAGE);<br />     }<br />     <br />     @SuppressWarnings("unchecked")<br />                     <br />     private void initComponents() {<br /> <br />         setHorizontalAlignment(javax.swing.SwingConstants.CENTER);<br />         setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/erroValidacao.png"))); // NOI18N<br />     }                     <br /> <br /> }<br /> <br /> [/code]]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197694/993077/redisparar-o--focuslost-e-cancelar-o-focusgained
</guid>
				<link>http://www.guj.com.br/prepost/197694/993077/redisparar-o--focuslost-e-cancelar-o-focusgained
</link>
				<pubDate><![CDATA[Wed, 10 Feb 2010 09:02:42]]> GMT</pubDate>
				<author><![CDATA[ VantuilJose]]></author>
			</item>
	</channel>
</rss>
