Com meu tempo atribulado, hoje tive uma iluminação:
Preciso de algo para gerenciar melhor meu tempo durante o dia… já sei, vou fazer um temporizador!
Isso, e pelo fato da água da chaleira ferver demais e eu ter que re-enxê-la para fazer café. Muito chato isso – mesmo. Fui até o Eclipse, e comecei a digitar.
Quero algo em formato de pop-ups, que aparecem na tela e me diga: “Ei, hora disso.”
Pop-ups.. hum… Poderiam ser Dialogs? Surgiu uma idéia simples:
Começando com uma classe simples, chamemo-a Main.
public class Main{
}
Para podermos chamar fácil Dialogs de opções a partir dela, podemos acrescentar algo: herdando de JFrame, fica fácil de usá-la como componente pai de um Dialog de JOptionPane. Começamos a fazer sua classe principal também:
public class Main extends JFrame{
public static void main(String[] args){
Main m = new Main();
m.setVisible(false);
}
}
Ok, agora já temos um JFrame invisível. A partir deles vamos abrir pop-ups. Podemos ter um para saber quantos minutos você quer esperar, e outro para saber que mensagem ele deve retornar para lhe lembrar do que era para ser feito. Finalmente teremos um que indicará que passou o tempo.
public class Main extends JFrame{
public static void main(String[] args){
Main m = new Main();
m.setVisible(false);
String tempo = JOptionPane.showInputDialog(m,"Digite o tempo de espera");
if(tempo==null){
//caso da janela ser cancelada ou fechada.
System.exit(0);
}
tempo=tempo.trim();
int minutos = Integer.parseInt(tempo);
String mensagem = JOptionPane.showInputDialog(m,
"Digite a mensagem de alerta!");
Thread.sleep(minutos*60*1000);
JOptionPane.showMessageDialog(m,mensagem);
m.dispose();
System.exit(0);
}
}
}
O programa todo é mais ou menos isso. Na chamada de Thread.sleep, a multiplicação é feita para passar de minutos para milissegundos, medida de tempo que ele usa. Claro, algumas exceções devem ser verificadas: NumberFormatException e InterruptedException, para o parseInt e o sleep, respectivamente. Podemos florear também o retorno um pouco. O código final fica assim:
public class Main extends JFrame{
public static void main(String[] args){
Main m = new Main();
m.setVisible(false);
try{
String tempo = JOptionPane.showInputDialog(m,"Digite o tempo de espera");
if(tempo==null){
//caso da janela ser cancelada ou fechada.
System.exit(0);
}
tempo=tempo.trim();
int minutos = Integer.parseInt(tempo);
String mensagem = JOptionPane.showInputDialog(m,
"Digite a mensagem de alerta!");
Thread.sleep(minutos*60*1000);
JOptionPane.showMessageDialog(m,mensagem,"Passados "+tempo+" minutos!!!",
JOptionPane.WARNING_MESSAGE);
} catch(NumberFormatException e){
JOptionPane.showMessageDialog(m, "Use somente "+
" números inteiros para o tempo!!!");
} catch(InterruptedException e){
JOptionPane.showMessageDialog(m, e.getMessage());
} finally{
m.dispose();
System.exit(0);
}
}
}
}
Quanto à dependências dos pacotes, só precisa do JFrame e do JOptionPane – nada que um Ctrl+Shift+O não resolva.
Isso, em uma classe só, é um aplicativo trivial e funcional o suficiente para eu ter me viciado nele. Já virei escravo dele para tudo que preciso. E não me preocupo mais que a água da chaleira evapore toda.


