<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dimensão Tech &#187; Exemplos de Código</title>
	<atom:link href="http://www.dimensaotech.com/category/computadores/programacao/exemplos-de-codigo/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dimensaotech.com</link>
	<description>Tecnologia, Games, Programação, Tudo em um só lugar!</description>
	<lastBuildDate>Fri, 10 Feb 2012 14:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Como abrir uma Janela em Java</title>
		<link>http://www.dimensaotech.com/2010/11/como-abrir-uma-janela-em-java/</link>
		<comments>http://www.dimensaotech.com/2010/11/como-abrir-uma-janela-em-java/#comments</comments>
		<pubDate>Mon, 01 Nov 2010 16:20:20 +0000</pubDate>
		<dc:creator>Eduardo Costa</dc:creator>
				<category><![CDATA[Exemplos de Código]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Exemplo Código]]></category>
		<category><![CDATA[JFrame]]></category>

		<guid isPermaLink="false">http://www.dimensaotech.com/?p=3696</guid>
		<description><![CDATA[Uma dúvida simples que tenho recebido por parte de alguns alunos esta em como criar uma janela capaz de abrir outra ao clicar em um botão. Há diversas formas de se fazer isso. Visto que não é a primeira vez que recebo esta mesma dúvida, resolvi postar aqui um trecho de código simples que exemplifica [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://www.java2s.com/Tutorial/JavaImages/SimplestFrame.PNG" alt="" width="180" height="180" />Uma dúvida simples que tenho recebido por parte de alguns alunos esta em como criar uma janela capaz de abrir outra ao clicar em um botão. Há diversas formas de se fazer isso.</p>
<p>Visto que não é a primeira vez que recebo esta mesma dúvida, resolvi postar aqui um trecho de código simples que exemplifica uma maneira de se obter este comportamento desejado. Segue:<br />
<span id="more-3696"></span></p>
<p>Esta é a classe que deve ser executada</p>
<pre class="brush: java; ">

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class JanelaDeLoginFrame extends JFrame implements ActionListener{

public JanelaDeLoginFrame() {
this.setSize(300,100);
this.setVisible(true);
JButton botao = new JButton(&quot;abrir&quot;);
botao.addActionListener(this);
this.getContentPane().add(botao);
}

public static void main(String[] args) {
new JanelaDeLoginFrame();
}

@Override
public void actionPerformed(ActionEvent e) {
JanelaPrincipalFrame j = new JanelaPrincipalFrame();
j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
j.setSize(300,300);
this.setVisible(false);
j.setVisible(true);

}

}
</pre>
<p>Esta segunda classe ira conter o conteúdo de sua segunda janela</p>
<pre class="brush: java; ">

import javax.swing.JFrame;

public class JanelaPrincipalFrame extends JFrame{

public JanelaPrincipalFrame()
{

}

}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.dimensaotech.com/2010/11/como-abrir-uma-janela-em-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comunicação Serial com Delphi 2010</title>
		<link>http://www.dimensaotech.com/2010/07/comunicacao-serial-com-delphi-2010/</link>
		<comments>http://www.dimensaotech.com/2010/07/comunicacao-serial-com-delphi-2010/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 10:00:03 +0000</pubDate>
		<dc:creator>Fernando Fonte</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Exemplos de Código]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Comunicação Serial]]></category>
		<category><![CDATA[Enviar e Receber Dados Pela Porta Serial]]></category>
		<category><![CDATA[TComPort]]></category>

		<guid isPermaLink="false">http://www.dimensaotech.com/?p=3315</guid>
		<description><![CDATA[Esta dica é para quem tem interesse em desenvolver aplicações para automação industrial que exigem comunicação pela porta Serial para controlar ou interagir com equipamentos. O Delphi é um ambiente de desenvolvimento no mais simples estilo arrastar e soltar orientado a eventos. É uma ótima linguagem pra quem está começando e muito utilizada no desenvolvimento [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-3319" style="margin-left: 4px; margin-right: 4px;" title="Cabo Serial" src="http://www.dimensaotech.com/wp-content/2010/07/cabo_serial_1.jpg" alt="Cabo Serial" width="143" height="108" /></p>
<p>Esta dica é para quem tem interesse em desenvolver aplicações para automação industrial que exigem comunicação pela porta Serial para controlar ou interagir com equipamentos.</p>
<p>O Delphi é um ambiente de desenvolvimento no mais simples estilo arrastar e soltar orientado a eventos. É uma ótima linguagem pra quem está começando e muito utilizada no desenvolvimento de aplicações comerciais no Brasil. Uma de suas principais vantagens é a possibilidade de expandir suas características e funcionalidades através de componentes de terceiros. Muitos dos quais são fornecidos gratuitamente e com código fonte, como é o caso do TComPort desenvolvido por Dejan Crnila. Seus arquivos podem ser baixados aqui: <a href="http://sourceforge.net/projects/comport/">http://sourceforge.net/projects/comport/</a></p>
<p><span id="more-3315"></span></p>
<p>Compatível com as versões 7, 2007, 2009 e 2010 do Delphi, o TComPort possibilita o desenvolvedor a criar aplicações que necessitam comunicar-se através da porta Serial de maneira rápida de simples. Depois de instalado, sua utilização se resume em praticamente duas partes. O método <span style="color: #003300;">ComPort1.WriteStr</span> e o evento <span style="color: #003300;">ComPort1RxChar</span>.</p>
<p>Enviando Dados:</p>
<p>Para enviar dados pela porta Serial, basta passar uma String com o conteúdo desejado para o método <span style="color: #003300;">WriteStr</span> conforme o exemplo abaixo disparado durante um clique em um botão:</p>
<pre class="brush: delphi; ">

procedure TfrmTeste.Button1Click(Sender: TObject);

begin

if ComPort1.Connected = True then // Verifica se a porta esta conectada

begin

ComPort1.WriteStr(Edit1.Text); // Enviando dados pela Serial

Edit1.Text := &#039;&#039;;

end;

end;
</pre>
<p>Recebendo Dados:</p>
<p>Para receber dados pela porta Serial, basta utilizar o evento <span style="color: #003300;">OnRxChar</span> que é acionado automaticamente toda vez que alguma informação chega à porta Serial. Veja um exemplo abaixo:</p>
<pre class="brush: delphi; ">

procedure TfrmTeste.ComPort1RxChar(Sender: TObject; Count: Integer);

var

Buffer : AnsiString;

Contador: Integer;

begin

// Define o valor do Time Out

Sleep(500);

// Confere o número total de bytes dentro do pacote enviado

Contador := ComPort1.InputCount;

// Lê o pacote enviado e armazena no Buffer

ComPort1.ReadStr(Buffer, Contador);

// Alimenta um campo Memo com os dados recebidos

Memo1.Lines.Add((Buffer);

end;
</pre>
<p>Uma observação importante é o uso da função Sleep no começo do evento. Como a comunicação Serial é muito mais lenta que o processamento do computador, é importante ajustar o valor do Sleep para que de tempo de todos os dados enviados sejam recebidos pelo computador. A função Sleep faz o computador aguardar o tempo estipulado em milissegundos antes de continuar na próxima linha.</p>
<p>Viu como é simples enviar e receber dados pela porta Serial utilizando o Delphi? Agora com está base você pode evoluir com o código de acordo com as necessidades da sua aplicação.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dimensaotech.com/2010/07/comunicacao-serial-com-delphi-2010/feed/</wfw:commentRss>
		<slash:comments>55</slash:comments>
		</item>
		<item>
		<title>Como capturar eventos em um JCheckbox</title>
		<link>http://www.dimensaotech.com/2010/01/como-capturar-eventos-em-um-jcheckbox/</link>
		<comments>http://www.dimensaotech.com/2010/01/como-capturar-eventos-em-um-jcheckbox/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 09:00:18 +0000</pubDate>
		<dc:creator>Eduardo Costa</dc:creator>
				<category><![CDATA[Exemplos de Código]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[ChangeListener]]></category>
		<category><![CDATA[Checkbox]]></category>
		<category><![CDATA[Eventlistener]]></category>
		<category><![CDATA[Java Event]]></category>
		<category><![CDATA[Java Listeners]]></category>
		<category><![CDATA[Jcheckbox]]></category>

		<guid isPermaLink="false">http://www.dimensaotech.com/?p=2588</guid>
		<description><![CDATA[Neste exemplo mostro como adicionar um listener no componente gráfico JCheckBox e assim capturar os eventos disparados pelo usuário. Eventos é toda a iteração com o componente gráfico como o pressionar de um botão ou simplesmente locomover o mouse sobre o componente. Veja como isso pode ser feito: import javax.swing.AbstractButton; import javax.swing.ButtonModel; import javax.swing.JCheckBox; import [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2592" title="ScreenShot034" src="http://www.dimensaotech.com/wp-content/2010/01/ScreenShot034.jpg" alt="" width="211" height="93" /></p>
<p>Neste exemplo mostro como adicionar um listener no componente gráfico JCheckBox e assim capturar os eventos disparados pelo usuário. Eventos é toda a iteração com o componente gráfico como o pressionar de um botão ou simplesmente locomover o mouse sobre o componente. Veja como isso pode ser feito:</p>
<p><span id="more-2588"></span></p>
<pre class="brush: java; ">

import javax.swing.AbstractButton;
import javax.swing.ButtonModel;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class JCheckBoxComEventos {
public static void main(String args[]) {

JCheckBox checkBox = new JCheckBox(&quot;Opção&quot;);

// A classe ChangeListener é responsável por tratar os eventos do JCheckBox
ChangeListener changeListener = new ChangeListener() {
public void stateChanged(ChangeEvent changeEvent) {
AbstractButton abstractButton = (AbstractButton)changeEvent.getSource();
ButtonModel buttonModel = abstractButton.getModel();
//indica que o componente sera precionado
boolean armed = buttonModel.isArmed();
//indica que o componente esta precionado
boolean pressed = buttonModel.isPressed();
//indica que o componente esta selecionado (check marcado)
boolean selected = buttonModel.isSelected();
System.out.println(&quot;Evento disparado. isArmed:&quot; + armed + &quot; isPressed:&quot; + pressed + &quot; isSelected? &quot; +selected);
}
};

//Adiciona a classe que vai capturar os eventos ao checkbox
checkBox.addChangeListener(changeListener);

JFrame janela = new JFrame(&quot;JCheckBox&quot;);
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.add(checkBox);
janela.setSize(200, 80);
janela.setVisible(true);
}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.dimensaotech.com/2010/01/como-capturar-eventos-em-um-jcheckbox/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JOptionPane com JPasswordField</title>
		<link>http://www.dimensaotech.com/2010/01/jopationpane-com-jpasswordfield/</link>
		<comments>http://www.dimensaotech.com/2010/01/jopationpane-com-jpasswordfield/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 09:00:41 +0000</pubDate>
		<dc:creator>Eduardo Costa</dc:creator>
				<category><![CDATA[Exemplos de Código]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[JDialog]]></category>
		<category><![CDATA[JoptionPane]]></category>
		<category><![CDATA[JPasswordField]]></category>
		<category><![CDATA[Senha]]></category>

		<guid isPermaLink="false">http://www.dimensaotech.com/?p=2574</guid>
		<description><![CDATA[Você já deve conhecer a classe JOptionPane, ela fornece alguns recursos uteis para exibir mensagens para o usuário, seu método showInputDialog(&#8230;) é muito útil para solicitar a entrada de dados pelo usuário, no entanto não é recomendado seu uso para solicitar senhas  pois o valor digitado é exibido como texto puro. É possível exibir um [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2575" title="ScreenShot032" src="http://www.dimensaotech.com/wp-content/2010/01/ScreenShot032.jpg" alt="" width="281" height="140" /></p>
<p>Você já deve conhecer a classe JOptionPane, ela fornece alguns recursos uteis para exibir mensagens para o usuário, seu método showInputDialog(&#8230;) é muito útil para solicitar a entrada de dados pelo usuário, no entanto não é recomendado seu uso para solicitar senhas  pois o valor digitado é exibido como texto puro.<br />
É possível exibir um componente JPasswordField() utilizando a classe JOptionPane e então recuperá-lo posteriormente, veja como:</p>
<p><span id="more-2574"></span></p>
<pre class="brush: java; ">

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;

/**
* Demonstra como utilizar um JOptionPane.showConfirmDialog para requisitar senhas do usuário
* @author Eduardo Costa - www.dimensaotech.com
*
*/
public class JOptionPassword {

static String SENHA = &quot;123&quot;;
public static void main(String args[])
{
//Criar a mensagem sera exibida
JLabel label = new JLabel(&quot;Digite a senha:&quot;);
//criar o componente grafico que recebera o que for digitado
JPasswordField jpf = new JPasswordField();
//Exibir a janela para o usuario
JOptionPane.showConfirmDialog(null,
new Object[]{label, jpf}, &quot;Senha:&quot;,
JOptionPane.OK_CANCEL_OPTION,JOptionPane.PLAIN_MESSAGE);

//Pegamos o que foi digitado e comparamos com a senha correta
String senhaDigitada = new String(jpf.getPassword());
if (SENHA.equals(senhaDigitada))
System.out.println(&quot;Senha correta&quot;);
else
System.out.println(&quot;Senha incorreta&quot;);

}
}
</pre>
<p>Quando a janela é exibida o foco não é carregado diretamente dentro do JPasswordField, veja como contornar este problema <a href="http://blogger.ziesemer.com/2007/03/java-password-dialog.html" target="_blank">aqui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dimensaotech.com/2010/01/jopationpane-com-jpasswordfield/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JTextfield que aceita apenas números</title>
		<link>http://www.dimensaotech.com/2010/01/jtextfield-que-aceita-apenas-numeros/</link>
		<comments>http://www.dimensaotech.com/2010/01/jtextfield-que-aceita-apenas-numeros/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 13:45:21 +0000</pubDate>
		<dc:creator>Eduardo Costa</dc:creator>
				<category><![CDATA[Exemplos de Código]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Formatação]]></category>
		<category><![CDATA[JTextField]]></category>
		<category><![CDATA[Only numbers]]></category>
		<category><![CDATA[PlainDocument]]></category>

		<guid isPermaLink="false">http://www.dimensaotech.com/?p=2567</guid>
		<description><![CDATA[É importante fazer com que a validação de dados digitado pelo usuário seja feita já no componente gráfico de forma a evitar dados inconsistente e falhas no sistema. Java dispões de diversos recursos para  isso, segue abaixo uma das formas de permitir que um componente texto (um JTextField no nosso caso) aceite apenas a entrada de números [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-2569" title="OnlyNumber" src="http://www.dimensaotech.com/wp-content/2010/01/ScreenShot030-300x106.jpg" alt="" width="300" height="106" />É importante fazer com que a validação de dados digitado pelo usuário seja feita já no componente gráfico de forma a evitar dados inconsistente e falhas no sistema. Java dispões de diversos recursos para  isso, segue abaixo uma das formas de permitir que um componente texto (um JTextField no nosso caso) aceite apenas a entrada de números inteiros.</p>
<p><span id="more-2567"></span><br />
Classe OnlyNumberField.java</p>
<pre class="brush: java; ">

import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
/**
* Restringe a digitação de apenas numeros em um componentes de texto como o JTextField
* Uso: setDocument(new OnlyNumberField());
* @author Eduardo Costa - www.dimensaotech.com
*
*/
public class OnlyNumberField extends PlainDocument
{

private int maxlength;

public OnlyNumberField(){}

public OnlyNumberField(int maxlength)
{
super();
this.maxlength = maxlength;
}

public void insertString(int offs, String str, AttributeSet a)
{
try
{
Integer.parseInt(str);
} catch (NumberFormatException ex)
{
str = &quot;&quot;;
}
try
{
boolean fixedLengh = (!((getLength() + str.length()) &gt; maxlength));
if (maxlength == 0 || fixedLengh)
super.insertString(offs, str, a);
} catch (BadLocationException e)
{
e.printStackTrace();
}
}

}
</pre>
<p>Classe TesteOnlyNumberField .java</p>
<pre class="brush: java; ">

import javax.swing.JFrame;
import javax.swing.JTextField;

public class TesteOnlyNumberField {

public static void main(String args[])
{
JTextField campoTexto = new JTextField();
campoTexto.setDocument(new OnlyNumberField());
JFrame f = new JFrame(&quot;Apenas Números&quot;);
f.getContentPane().add(campoTexto);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300,100);
f.setVisible(true);

}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.dimensaotech.com/2010/01/jtextfield-que-aceita-apenas-numeros/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>JOptionPane com Timer</title>
		<link>http://www.dimensaotech.com/2010/01/joptionpane-com-timer/</link>
		<comments>http://www.dimensaotech.com/2010/01/joptionpane-com-timer/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 10:17:00 +0000</pubDate>
		<dc:creator>Eduardo Costa</dc:creator>
				<category><![CDATA[Exemplos de Código]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[JoptionPane]]></category>
		<category><![CDATA[Reminder]]></category>
		<category><![CDATA[Swing]]></category>
		<category><![CDATA[Timed optionPane]]></category>

		<guid isPermaLink="false">http://www.dimensaotech.com/2010/01/joptionpane-com-timer/</guid>
		<description><![CDATA[Crie uma mensagem de diálogo com timer, de modo que se o usuário não fazer determinada escolha em um tempo que você estipular a mensagem automaticamente some e você decide o que fazer. Segue o exemplo: import java.awt.BorderLayout; import java.awt.Dialog; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.JDialog; import javax.swing.JLabel; import [...]]]></description>
			<content:encoded><![CDATA[<p><img style="display: inline; margin-left: 0px; margin-right: 0px; border-width: 0px;" title="ScreenShot029" src="http://www.dimensaotech.com/wp-content/2010/01/ScreenShot029_thumb.jpg" border="0" alt="ScreenShot029" width="244" height="118" align="left" /></p>
<p>Crie uma mensagem de diálogo com timer, de modo que se o usuário não fazer determinada escolha em um tempo que você estipular a mensagem automaticamente some e você decide o que fazer.</p>
<p>Segue o exemplo:</p>
<p><span id="more-2555"></span></p>
<pre class="brush: java; ">

import java.awt.BorderLayout;
import java.awt.Dialog;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.Timer;
import javax.swing.WindowConstants;

/**
* A message dialog that closes after a timeout.
*/
public class TimedOptionPane {

protected static int UPDATE_PERIOD = 1000;

/**
* Show a dialogBox.
*
* @param f
*            the owner
* @param message
*            the message to display
* @param timeout
*            in milliseconds
* @param title
*            title of the dialog box
* @param timeoutMessage
*            text showing remaining seconds
* @return {@link JOptionPane#YES_OPTION}, when YEs is clicked, {@link JOptionPane#NO_OPTION}
*         if NO is clicked, or {@link JOptionPane#CANCEL_OPTION} on timeout or window closed
*         event.
*/
public final static int showTimedOptionPane(Window f, String message, String title,String timeoutMessage, final long timeout,int messageType,int options) {

final JDialog dialog = new JDialog(f, title, Dialog.ModalityType.APPLICATION_MODAL);
final Message messageComponent = new Message(message, timeout, timeoutMessage);
final JOptionPane pane = new JOptionPane(messageComponent, messageType,options);
dialog.setContentPane(pane);
dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
Timer timer = new Timer(UPDATE_PERIOD, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
messageComponent.addEllapsedMilliseconds(UPDATE_PERIOD);
if (messageComponent.isOver()) {
dialog.dispose();
}
}
});
timer.start();
pane.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent e) {
String prop = e.getPropertyName();
if (dialog.isVisible() &amp;amp;amp;&amp;amp;amp; (e.getSource() == pane)
&amp;amp;amp;&amp;amp;amp; (JOptionPane.VALUE_PROPERTY.equals(prop))) {
dialog.setVisible(false);
}
}
});
dialog.pack();
dialog.setLocationRelativeTo(f);
dialog.setVisible(true);
String valueString = pane.getValue().toString();
if (JOptionPane.UNINITIALIZED_VALUE.equals(valueString)) {
return JOptionPane.CANCEL_OPTION;
}
return ((Integer) pane.getValue()).intValue();
}

public final static int showTimedOptionPane(Window f, String message, String title,String timeoutMessage, final long timeout) {
return showTimedOptionPane( f,  message,  title, timeoutMessage,   timeout,JOptionPane.QUESTION_MESSAGE, -1);
}
public final static int showTimedOptionPane(Window f, String message, String title,String timeoutMessage, final long timeout,int messageType) {
return showTimedOptionPane( f,  message,  title, timeoutMessage,   timeout,messageType, -1);
}

/**
* Test...
*
* @param args
*/
public static void main(String args[]) {
int response = showTimedOptionPane(null, &quot;Did you choose ?&quot;, &quot;Please Choose&quot;,
&quot;Remaining : &quot;, 8000);
System.out.println(&quot;Choosen :&quot; + response);
System.exit(0);
}

/**
* Content of the {@link JOptionPane}.
*
* @author clap
*
*/
static class Message extends JPanel {

private String RS;

JLabel message;

JLabel remaining;

private long timeout;

private long ellapsed = 0;

/**
* Build content panel.
*
* @param message
*            the message to show
* @param milliseconds
*            timeout in milliseconds
* @param timeoutMessage
*            text showing remaining seconds
*/
protected Message(String message, long milliseconds, String timeoutMessage) {
super(new BorderLayout());
this.RS = timeoutMessage;
this.timeout = milliseconds;

this.message= new JLabel(message, SwingConstants.LEFT);
this.message.setHorizontalTextPosition(SwingConstants.LEFT);

add(this.message, BorderLayout.NORTH);
this.remaining = new JLabel(formatRemainingSeconds(milliseconds));
add(this.remaining, BorderLayout.SOUTH);
}

private String formatRemainingSeconds(long ms) {
return RS + (ms / 1000) + &quot;s.&quot;;
}

/**
*
* @return true if the timeout has been reached.
*/
protected boolean isOver() {
return ellapsed &gt;= timeout;
}

/**
* Indicates that some milliseconds has occured.
*
* @param milliseconds
*/
protected void addEllapsedMilliseconds(long milliseconds) {
ellapsed += milliseconds;
remaining.setText(formatRemainingSeconds(timeout - ellapsed));
repaint();
}
}
}
</pre>
<p>Fonte: <a href="http://forums-beta.sun.com/thread.jspa?threadID=5148811&amp;messageID=9556215" target="_blank">Forum Sun</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dimensaotech.com/2010/01/joptionpane-com-timer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

