Pessoal, sou novo aqui, e já venho dar trabalho pra vocês, mas vamos lá:
Eu estou fazendo um programa que desligue o meu pc na data que eu agendar(sei que tem programas que fazem isso, mas quero fazer eu o meu), a parte de mostrar a data e hora na tela eu fiz, a parte do desligamento eu também fiz, minha dúvida é como faço pra executar o comando de desligamento na data que o usuário digitou, meu problemas:
1 - Não consigo comparar a data do sistema com a data digitada pelo usuario(Que é um JFormattedTextField)
2 - Se eu conseguir fazer a comparação, como faço pra executar apenas na data comparada, uso um laço de repetição pra ficar comparando? :s
trecho do código:
public class agendamento extends Thread {
private JLabel hr;
private boolean mostrarData;
private SimpleDateFormat sdf;
private StringBuffer data;
public agendamento (JLabel hora) {
this.hr = hora;
}
public void mostrarData(boolean mostrar) {
if(mostrar) {
this.mostrarData = true;
} else {
this.mostrarData = false;
}
} public void run()
{
try {
while (true) {
Date d = new Date();
data = new StringBuffer();
if(mostrarData) {
SimpleDateFormat sdfData = new SimpleDateFormat("dd.MM.yyyy");
data.append(sdfData.format(d));
data.append(" - "); }
sdf = new SimpleDateFormat("HH:mm");
this.hr.setText(data.toString() + sdf.format(d));
Thread.sleep(1000);
this.hr.revalidate();
}
} catch (InterruptedException ex) {
//TODO
}
}
public void desligarPc(String horario)
{
//Aqui é onde é feito o desligamento, o String horario é o horario que o usuario passou (por enquanto estou apenas mexendo com, horas e não data)
//Falta a comparação pra entra nesse trecho e a repetição(acho que é repetição), mas não sei como fazer
try {
Runtime.getRuntime().exec("rundll32.exe user.exe,ExitWindows");
Runtime.getRuntime().exec("shutdown -s -t 10");
} catch (IOException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
}
}
Obrigado desde já pela ajuda!