1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;
import java.util.TimeZone;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;
@SuppressWarnings("serial")
public class MonCalendrier2 extends JFrame
{
//valeur jour, mois, annee, jour dans le mois
int j, m,a,js,maxDay;
//mois en cour (indice Calendar 0 à 11)
int mois = 0;
//mes elements
JPanel contentPane, panBtnMois, panCalendrier;
JButton btnNext;
JLabel lblMois;
//Calendrier
Calendar cal;
public static void main(String[] args)
{
MonCalendrier2 frame = new MonCalendrier2();
frame.go();
}
public void go()
{
//option de la fenetre
setSize(600,500);
setTitle("Test fenetre");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(true);
//creation des element et agencement
contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
this.setContentPane(contentPane);
panBtnMois = new JPanel();
contentPane.add(panBtnMois, BorderLayout.NORTH);
btnNext = new JButton("mois suivant");
btnNext.addActionListener(new BoutonListeneur());
panBtnMois.add(btnNext);
panCalendrier = new JPanel();
panCalendrier.setLayout(new GridLayout(6,5));
panCalendrier.setBackground(Color.GREEN);
contentPane.add(panCalendrier, BorderLayout.CENTER);
//fonction qui crée et place les case des jours
creationJour();
lblMois = new JLabel(Integer.toString(mois));
lblMois.setHorizontalAlignment(JLabel.CENTER);
contentPane.add(lblMois, BorderLayout.SOUTH);
//des print de control
System.out.println(cal.getTime());
System.out.println("Jour de al semaine: " + cal.get(Calendar.DAY_OF_WEEK));
System.out.println("Jour: " + cal.get(Calendar.DAY_OF_MONTH));
System.out.println("Mois: " + cal.get(Calendar.MONTH));
System.out.println("Année: " + cal.get(Calendar.YEAR));
System.out.println("jour dans le mois : " + maxDay);
System.out.println(j + "-" + m + "-" + a);
setVisible(true);
}
public void creationJour()
{
cal = Calendar.getInstance(TimeZone.getDefault());
//choix du jour
cal.set(Calendar.DAY_OF_MONTH, 1);
//choix du mois
cal.set(Calendar.MONTH, mois);
//choix de l'annee
cal.set(Calendar.YEAR,2014);
//calcule du nbr de jour dans le mois choisi
maxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
j = cal.get(Calendar.DAY_OF_MONTH);
m = cal.get(Calendar.MONTH) + 1;
a = cal.get(Calendar.YEAR);
js = cal.get(Calendar.DAY_OF_WEEK)-1;
//instanciation du tableau qui va contenir le calendrier 7 colone sur 6 ligne
//42 cases jour et case vide comprise
JPanel[] panJours = new JPanel[42];
//premiere case jour etant le jour 1 du mois
int numJour = 1;
for(int i = 1; i<=42; i++)
{
//condition qui permet de mettre des case blanche aveant et apres quand le mois commance
//un jour autre qu'un lundi et fini un jour autre que dimanche
if(i >= js && i < js + maxDay)
{
JPanel panJour = new JPanel();
String nom = Integer.toString(numJour);
panJour.setBorder(new TitledBorder(null, nom, TitledBorder.LEADING, TitledBorder.TOP, null, null));
panJours[i-1] = panJour;
panCalendrier.add(panJour);
numJour++;
}
else
{
JPanel panJour = new JPanel();
panJours[i-1] = panJour;
panCalendrier.add(panJour);
}
}
}
//listener du bouton
class BoutonListeneur implements ActionListener
{
public void actionPerformed(ActionEvent arg0) {
//quand on clic on passe au mois suivant grace à son indice Calendar 0 à 11
if(mois < 11)
{
mois++;
cal.set(Calendar.MONTH, mois);
}
else
{
mois = 0;
cal.set(Calendar.MONTH, mois);
}
System.out.println(mois);
System.out.println("Mois: " + cal.get(Calendar.MONTH));
//PROBLEME aucune action visuelle sur la fenetre
panCalendrier.repaint();
panCalendrier.revalidate();
}
}
} |
Partager