Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted by erry ( 19 years ago )
import javax.swing.text.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import java.applet.*;
import java.net.*;
import java.io.*;



public class Sveglia extends JPanel implements ActionListener{

	/* le variabili dovrebbero essere comprensibili dal nome*/
	
	
	private	JFormattedTextField sveglia;
	private JButton salva;
	private JButton reset;
	private javax.swing.Timer timer;
	private int hour;
	private int minutes;
	private AudioClip audioClip;
	private JCheckBox suona;
	private JCheckBox spegni;
	private Ora time;
	private boolean errore;
	
	public Sveglia()throws Exception{
			
		super();
		
		time=new Ora(new Font("Comic Sans MS",1,21));
		
		sveglia=new JFormattedTextField();
		MaskFormatter mf=null;
		
		try{
	
			mf=new MaskFormatter("##:##");//cosi l'input è un po' controllato...
		}
		
		catch(ParseException e){
		
			System.out.println("Errore di Parsing!");
		}
			
		mf.install(sveglia);
			
		sveglia.setColumns(4);
		sveglia.setFont(new Font("Comic Sans MS",1,21));//mi piace il comic sans...
		
		salva=new JButton("salva");/* i due    */
		reset=new JButton("reset");/* pulsanti */
		
		salva.setFont(new Font("Comic Sans MS",0,16));
		reset.setFont(new Font("Comic Sans MS",0,16));
		
		salva.addActionListener(this);
		reset.addActionListener(this);
		
		suona=new JCheckBox("suona");     /* e le due */
		spegni=new JCheckBox("spegni PC");/* checkbox */
		
		suona.addActionListener(this);
		spegni.addActionListener(this);
		
		suona.setFont(new Font("Comic Sans MS",1,14));
		spegni.setFont(new Font("Comic Sans MS",1,14));
		
		timer=null;
		audioClip=null;
		
		hour=-1;
		minutes=-1;
		
		salva.setEnabled(false);//questo pulsante non si usa fino all'immisione di un'ora
		
		JPanel pannelloOra=new JPanel();      /* creiamo i vari pannelli       */
		JPanel pannelloCheck=new JPanel();    /* per gestire un po' più        */
		JPanel pannelloPulsanti=new JPanel(); /* comodamente il posizionamento */
		
		setLayout(new BorderLayout());//il layout border va benissimo con 3 elementi
		
		//aggiungiamo ogniccosa al rispettivo pannello:	
		pannelloOra.add(time); 
		pannelloOra.add(sveglia);
		
		pannelloCheck.add(suona);
		pannelloCheck.add(spegni);
		
		pannelloPulsanti.add(salva);
		pannelloPulsanti.add(reset);
		
		//aggiungiamo i pannelli in alto, al centro e in basso
		add(pannelloOra,BorderLayout.NORTH);
		add(pannelloCheck,BorderLayout.CENTER);
		add(pannelloPulsanti,BorderLayout.SOUTH);
		setOpaque(true);
		
	}
		
	public void actionPerformed (ActionEvent e){
		
		Object source=e.getSource();
		
		if(source==spegni||source==suona){//è stata selezionata una checkbox attiviamo il pulsante salva
			
			if(!salva.isEnabled()&&(spegni.isSelected()||suona.isSelected()))
				salva.setEnabled(true);
			
			else if(salva.isEnabled()&&!spegni.isSelected()&&!suona.isSelected())
				salva.setEnabled(false);
		}
		
		if(source==salva){//facciamo partire la sveglia
			
			sveglia.setEditable(false);
		
			suona.setEnabled(false);
			
			spegni.setEnabled(false);
			
			salva.setEnabled(false);
			
			try{
			
				setTimer(sveglia.getText());//con il timer ovviamente
			}
		
			catch(NumberFormatException e1){
		
				sveglia.setEditable(true);
				suona.setEnabled(true);
				spegni.setEnabled(true);
				salva.setEnabled(true);
				JOptionPane.showMessageDialog(null, e1.getMessage()+"" ,"Ora inserita non valida", JOptionPane.ERROR_MESSAGE);//belli gli option pane!
			}
		
		
		}
		
		if(source==reset){//resetta i campi o ferma la sveglia (se sta suonando o sta spegnendo il piccì
		
			reset.setText("reset");
					
			hour = -1;
			minutes = -1;
			
			sveglia.setEditable(true);
		
			suona.setEnabled(true);
			
			spegni.setEnabled(true);
			
			suona.setSelected(false);
			
			spegni.setSelected(false);
			
			salva.setEnabled(false);
			
			//if(spegni.isSelected()||suona.isSelected())
			//	salva.setEnabled(true);
			
			sveglia.setText("");
			
			if(timer!=null){
				timer.stop();
				timer=null;
			}
			
			if(audioClip!=null){ //ferma la suoneria
				audioClip.stop();
				audioClip=null;
			}
			
			try{
				Runtime.getRuntime().exec("shutdown -a"); //ferma lo spegnimento
			}
			
			catch(IOException e4){
				System.out.println("errore nella terminazione del processo di spegnimento");
			}
		
		}
			
		else {

			Calendar gc = new GregorianCalendar();
			
			if(gc.get(Calendar.HOUR_OF_DAY)==hour&&gc.get(Calendar.MINUTE)==minutes){//l'ora è scoccata
				
				if(suona.isSelected()){
				
					try{
						ring();//suoniamo la sveglia
					}
					
					catch(Exception e1){
						System.out.println("errore in ring");
					}
				}
				
				if(spegni.isSelected())
					shutdown();//spegniamo il piccì
			}
						
		}
	
	}
	
	
	private void setTimer(String s){
		
		String h=s.substring(0,2);//l'ora
		String m=s.substring(3,s.length());//e i minuti
		
		//controlli per chi non ha voglia di scrivere l'ora a 4 cifre
		if(h.startsWith(" "))
			h=h.substring(1,2);
			
		if(h.endsWith(" "))
			h=h.substring(0,1);	
			
		if(m.startsWith(" "))
			m=m.substring(1,2);
			
		if(m.endsWith(" "))
			m=m.substring(0,1);	
		
		try{
			hour=Integer.parseInt(h);
			minutes=Integer.parseInt(m);
		}
		
		catch(NumberFormatException e){	//se non sono state immesse almeno 1 cifra prima dei due punti e 1 dopo...
			
			JOptionPane.showMessageDialog(null, "Campi ora non completati correttamente" ,"Ora inserita non valida", JOptionPane.ERROR_MESSAGE);
			
			errore=true;
		    
		    sveglia.setEditable(true);
			suona.setEnabled(true);
			spegni.setEnabled(true);
			salva.setEnabled(true);

		}
		
		if(hour>23)
			throw new NumberFormatException("ora inserita maggiore di 23!"); //stupido controllo da principiante
		
		if(minutes>59)
			throw new NumberFormatException("minuti inseriti maggiori di 59!");//come sopra
		
		timer=new javax.swing.Timer(1000,this);//il timer per controllare l'ora ogni 1000 msec = 1 sec
		
		if(!errore)
		 timer.start();//facciamo partire il timer
		
	}

	private void ring()throws Exception{//driin, svegliaaaaaa
		
		timer.stop();
		System.out.println("drinn");
		audioClip = Applet.newAudioClip(new URL("file:" + System.getProperty("user.dir") + "/"+"test.wav"));
		reset.setText("Stop!");
		audioClip.loop();//con loop cosi non si ferma finchè non la si stoppa
	}
	
	private void shutdown(){//speginmento per windows, ma adattabile a linux
		
		reset.setText("annulla!");
		
		try{
			Runtime.getRuntime().exec("shutdown -s -f -t 20 -c "hai 20 secondi per terminare lo spegnimento, premendo il tasto""); 
		}
		
		catch (IOException e3){
			System.out.println("errore nell'invio del comando di shutdown");
		}
	
	}
	
	
	public static void main(String args[]){
		
		
		JFrame f=new JFrame("Sveglia");//creiamo il frame e il container per il pannello
		Container c=f.getContentPane();
		
		System.out.println("caricamento...");
		
		try{
		c.add(new Sveglia());
		}
		
		catch (Exception e2){// non dovrebbe succedere
		}
		
	
		System.out.println("fatto!");
		
		f.pack();//resize automatico
		f.setVisible(true);
		f.setResizable(false);//va bene cosi perchè ingrandirlo?
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}	
		

	
	
	
	
}

 

Revise this Paste

Your Name: Code Language: