import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.util.Calendar;
public class myCalendar7 extends JApplet {
private static final long serialVersionUID = 1L;
JButton[] bottone;
JPanel pannelloBottoni;
JPanel pannelloCampi;
Container pannelloApplet;
public JTextField ggStart = new JTextField(10);
public JTextField mmStart = new JTextField(10);
public JTextField yyStart = new JTextField(10);
public JTextField ggEnd = new JTextField(10);
public JTextField mmEnd = new JTextField(10);
public JTextField yyEnd = new JTextField(10);
// Labels della data iniziale
public JLabel gS = new JLabel("Giorno iniziale:");
public JLabel mS = new JLabel("Mese iniziale:");
public JLabel yS = new JLabel("Anno iniziale:");
// Labels della data finale
public JLabel gE = new JLabel("Giorno finale:");
public JLabel mE = new JLabel("Mese finale:");
public JLabel yE = new JLabel("Anno finale:");
// Label TestoOutput
public JLabel Output = new JLabel("Risultato:");
public JTextArea testoOutput = new JTextArea();
public void init() {
// Settaggio testo
testoOutput.setEditable(false);
testoOutput.setText("Inserire i dati");
// Definisco il layout dell'applet:
pannelloApplet = getContentPane();
pannelloApplet.setLayout(new BorderLayout());
// inseriremo i 6 bottoni non direttamente dell'applet,
// ma in un pannello che verra' inserito nel centro dell'
// applet. Costruiamo il pannello:
pannelloBottoni = new JPanel();
// dispongo i 6 bottoni in una griglia 3 x 2:
pannelloBottoni.setLayout(new GridLayout(3, 2));
// definisco il colore di fondo del pannelloBottoni:
pannelloBottoni.setBackground(Color.black);
// definisco un array di 6 bottoni.
bottone = new JButton[9];
// inizializzo i 6 bottoni e li aggiungo al pannelloBottoni.
// Etichetta dei bottoni:
String[] nomeBottone = {"Componi data", "Data corrente", "Controllo data",
"Aggiungi tempo", "bott. 5", "bott. 6",
"bott. 7", "bott. 8", "bott. 9"};
// Colore di sfondo dei bottoni:
Color[] coloreBottone = {Color.red, Color.white, Color.yellow,
Color.cyan, Color.green, Color.magenta,
Color.red, Color.white, Color.yellow};
for (int i = 0; i < bottone.length; i++) {
bottone[i] = new JButton(nomeBottone[i]);
bottone[i].setBackground(coloreBottone[i]);
pannelloBottoni.add(bottone[i]);}
// inserisco il pannelloBottoni a sud dell'applet:
pannelloApplet.add(pannelloBottoni, BorderLayout.SOUTH);
// Definisco il pannello e i campi d'Input che dovrà contenere:
JPanel pannelloCampi = new JPanel();
pannelloCampi.setLayout(new GridLayout(2,6,0,0));
// Inserisco in pannelloCampi la data iniziale, quella finale ed il testo di output:
// Data START
pannelloCampi.add(gS);
pannelloCampi.add(ggStart);
pannelloCampi.add(mS);
pannelloCampi.add(mmStart);
pannelloCampi.add(yS);
pannelloCampi.add(yyStart);
// Data END
pannelloCampi.add(gE);
pannelloCampi.add(ggEnd);
pannelloCampi.add(mE);
pannelloCampi.add(mmEnd);
pannelloCampi.add(yE);
pannelloCampi.add(yyEnd);
// inserisco il pannelloCampi a nord dell'applet:
pannelloApplet.add(pannelloCampi, BorderLayout.NORTH);
// Definisco il pannello e gli Item che dovrà contenere:
JPanel pannelloOut = new JPanel();
pannelloOut.setLayout(new FlowLayout());
// OutPut
pannelloOut.add(Output);
pannelloOut.add(testoOutput);
pannelloApplet.add(pannelloOut, BorderLayout.CENTER);
Receiver1 receiver1 = new Receiver1();
Receiver2 receiver2 = new Receiver2(); // ActionListener(s)
Receiver3 receiver3 = new Receiver3(); //- da implementare dopo questa classe -
Receiver4 receiver4 = new Receiver4();
Receiver5 receiver5 = new Receiver5();
Receiver6 receiver6 = new Receiver6();
// assegnazione ActionListener(s) ai corrispondenti JButton(s) assegnazione ActionListener(s) ai corrispondenti JButton(s)
bottone[0].addActionListener(receiver1);
bottone[1].addActionListener(receiver2);
bottone[2].addActionListener(receiver3);
bottone[3].addActionListener(receiver4);
bottone[4].addActionListener(receiver5);
bottone[5].addActionListener(receiver6);
}
// la classe che definisce il ricevitore di eventi usato
// dal bottone Componi data:
class Receiver1 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String giorno = ggStart.getText ();
String mese = mmStart.getText ();
String anno = yyStart.getText ();
testoOutput.setText(giorno + "/" + mese + "/" + anno + "<--------->" + anno + "/" + mese + "/" + giorno);
}
}
// la classe che definisce il ricevitore di eventi usato
// dal bottone :
class Receiver2 implements ActionListener {
public void actionPerformed(ActionEvent e) {
Calendar cal = new GregorianCalendar();
testoOutput.setText(cal.get(Calendar.DAY_OF_MONTH) + "/" + (cal.get(Calendar.MONTH)+1) + "/" + cal.get(Calendar.YEAR));
}
}
// la classe che definisce il ricevitore di eventi usato
// dal bottone Controllo data:
class Receiver3 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String SGiorno = ggStart.getText ();
String SMese = mmStart.getText ();
String SAnno = yyStart.getText ();
//Parsing:
int day=Integer.parseInt(SGiorno);
int month=Integer.parseInt(SMese);
int year=Integer.parseInt(SAnno);
GregorianCalendar cal = new GregorianCalendar (year, month-1, day);
cal.setLenient (false);
//Le stringhe sono oggetti "immutabili". Non esiste un metodo setText()
// né esiste un qualche altro metodo che modifica lo stato dell'oggetto String.
try {
cal.get (Calendar.DATE);
testoOutput.setText(day +"/"+ month +"/"+ year + ": data corretta.");
} catch (IllegalArgumentException i) {
testoOutput.setText(day +"/"+ month +"/"+ year + ": data errata.");
}
}
}
// la classe che definisce il ricevitore di eventi usato
// dal bottone Aggiungi tempo:
class Receiver4 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String SGiorno = ggStart.getText ();
String SMese = mmStart.getText ();
String SAnno = yyStart.getText ();
String EGiorno = ggEnd.getText ();
String EMese = mmEnd.getText ();
String EAnno = yyEnd.getText ();
//Parsing:
int day = Integer.parseInt(SGiorno);
int month = Integer.parseInt(SMese);
int year = Integer.parseInt(SAnno);
//Tempo da aggiungere
int Agg = Integer.parseInt(EGiorno);
int Amm = Integer.parseInt(EMese);
int Ayy = Integer.parseInt(EAnno);
GregorianCalendar cal = new GregorianCalendar (year, month-1, day);
cal.setLenient (true);
//Aggiunte
cal.add(Calendar.DAY_OF_MONTH, Agg);
cal.add(Calendar.MONTH, Amm + 1);
cal.add(Calendar.YEAR, Ayy);
testoOutput.setText(cal.get(Calendar.YEAR) + "/" + cal.get(Calendar.MONTH) + "/" + cal.get(Calendar.DAY_OF_MONTH));
}
}
// la classe che definisce il ricevitore di eventi usato
// dal bottone Controllo data:
class Receiver5 implements ActionListener {
public void actionPerformed(ActionEvent e) {
}
}
// la classe che definisce il ricevitore di eventi usato
// dal bottone :
class Receiver6 implements ActionListener {
public void actionPerformed(ActionEvent e) {
}
}
}