Bueno en media hora que e podido sacar me a salido esto, esto es lo que yo queria, esta un poco guarro, pero bueno ya lo pulire cuando tenga tiempo.
Muchas gracias a los dos, que bonito es tu codigo Darhius xD.
package main;
import graphicinterface.Interface;
import javax.swing.SwingUtilities;
import protocols.Timer;
public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new Timer();
new Interface();
}
});
}
}
package protocols;
import java.util.Calendar;
public class Timer {
public Timer(){
protocolOfHour();
}
public boolean protocolOfHour(){
Calendar calendario = Calendar.getInstance();
int hora;
do{
try {
Thread.sleep(100000);
} catch (InterruptedException e) {
e.printStackTrace();
}
hora =calendario.get(Calendar.HOUR_OF_DAY);
}while(hora!=1);
return true;
}
}
package protocols;
import java.io.IOException;
public class Protocol {
public Protocol(){
exec("REG ADD HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run /v ShutdownProgramado /t REG_SZ /f /d 'C:\\Users\\Zoik\\Documents\\shutdown.jar'");
exec("shutdown -p -f");
}
private void exec(String cmd) {
try {
Runtime.getRuntime().exec(cmd);
}
catch (IOException e) {
System.out.println("El apagado a fallado");
}
}
}
package graphicinterface;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import protocols.Protocol;
public class Interface extends JFrame{
private static final long serialVersionUID = 1L;
JLabel text = new JLabel("");
JPanel panel = new JPanel();
int segundos = 300;
Timer timer;
public Interface(){
setSize(300,35);
setLocationRelativeTo(null);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
setResizable(false);
setUndecorated(true);
setAlwaysOnTop(true);
setVisible(true);
addLabel();
contador();
}
class RemindTask extends TimerTask {
public void run() {
segundos--;
if(segundos < 0){
text.setText(String.valueOf("El ordenador se apagará en 0 segundos"));
new Protocol();
}else{
text.setText(String.valueOf("El ordenador se apagará en "+segundos+" segundos"));
}
}
}
private void addLabel(){
panel.setBorder(BorderFactory.createLoweredBevelBorder());
add(panel);
panel.add(text);
}
private void contador(){
timer = new Timer();
timer.schedule(new RemindTask(),0, 1*1000);
}
}
Un saludo y gracias de nuevo.
EDITO: ¿Como pongo el código con líneas numeradas como tu Darhius?