A voir également:
- Calendar
- Synchroniser google calendar et outlook - Guide
- I calendar - Télécharger - Organisation
- Google calendar pc - Télécharger - Agendas & Calendriers
- Click tray calendar - Télécharger - Agendas & Calendriers
- Active desktop calendar - Télécharger - Organisation
import java.awt.Color; import java.awt.GridLayout; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JLabel; public class Test { public static void main(String...args) { JFrame frame = new JFrame(); frame.setLayout(new GridLayout(5,7)); for (int i=1; i<=31; i++) { JLabel label = new JLabel(String.valueOf(i)); if (i==16) label.setForeground(Color.RED); label.setBorder(BorderFactory.createLineBorder(Color.GRAY)); frame.add(label); } frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }Evidemment, dans cet exemple c'est très limité comme "calendrier".
package jcalendar;
//@lola
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.text.DateFormatSymbols;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
import javax.swing.*;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
public class JCalendar extends JPanel {
private Locale _locale = getDefaultLocale();
private GregorianCalendar _calendar = new GregorianCalendar();
private DateFormatSymbols _dateSymbols = new DateFormatSymbols();
private SimpleDateFormat _formatMY = new SimpleDateFormat("MMMM yyyy");
private int _firstDayOfWeek = _calendar.getFirstDayOfWeek();
private final JLabel _monthYear = new JLabel("", SwingUtilities.CENTER);
private final JLabel[] _daysOfWeek = new JLabel[7];
private final JButton[] _daysNumber = new JButton[42];
String[] s = {"Matin", "Soir"};
public static String test1 = null ;
test0 test2 = new test0();
private final ActionListener _changeMonth = new ActionListener() {
@Override
public void actionPerformed(final ActionEvent ae) {
final int nb = "next".equals(ae.getActionCommand()) ? 1: -1;
_calendar.add(Calendar.MONTH, nb);
updateMonthYear();
updateDaysNumber();
}
};
public JCalendar() {
setLayout(new BorderLayout());
// Month Panel
final JPanel monthPanel = new JPanel();
final JButton previous = new JButton("<<");
previous.addActionListener(_changeMonth);
final JButton next = new JButton(">>");
next.addActionListener(_changeMonth);
next.setActionCommand("next");
_monthYear.setPreferredSize(new Dimension(320, 120));
monthPanel.add(previous);
monthPanel.add(_monthYear);
monthPanel.add(next);
add(monthPanel, BorderLayout.NORTH);
// Day Panel
final JPanel dayPanel = new JPanel();
dayPanel.setLayout(new GridLayout(7, 7));
for (int i = 0; i < 7; ++i)
dayPanel.add(_daysOfWeek[i] = new JLabel(" ", SwingUtilities.CENTER));
for (int i=0; i<_daysNumber.length; ++i)
{
//fenetre de confirmation du jour
final int j = i;
_daysNumber[i] = new JButton();
_daysNumber[i].addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
test0.setTest(_daysNumber[j].getText()) ;
System.out.println(test0.getTest());
myconnection();
}
});
dayPanel.add(_daysNumber[i]);
}
add(dayPanel, BorderLayout.CENTER);
// Remplissage des composants
updateMonthYear();
updateDaysOfWeek();
updateDaysNumber();
}
// Réactualise la locale et réaffiche le contenu des composants
private void updateLocale(final Locale locale) {
_locale = locale;
final Date tmp = _calendar.getTime();
_calendar = new GregorianCalendar(_locale);
_calendar.setTime(tmp);
_firstDayOfWeek = _calendar.getFirstDayOfWeek();
_dateSymbols = new DateFormatSymbols(_locale);
_formatMY = new SimpleDateFormat("MMMM yyyy", _locale);
updateMonthYear();
updateDaysOfWeek();
updateDaysNumber();
}
// Affiche le mois et l'année en cours
private void updateMonthYear() {
_monthYear.setText(_formatMY.format(_calendar.getTime()));
}
// Affiche les jours de la semaine
private void updateDaysOfWeek() {
final String[] weekDays = _dateSymbols.getShortWeekdays();
for (int i = 1; i < weekDays.length; ++i) {
final int index = (i - 2 + _firstDayOfWeek) % 7 + 1;
_daysOfWeek[i - 1].setText(weekDays[index]);
}
}
// Affiche le numero des jours
private void updateDaysNumber() {
//apparition des marches dans le mois
String var ="";
int M1 = 2;
int M2 = 3;
int M3 = 4;
int M4 = 6;
final Date tmp = _calendar.getTime();
_calendar.set(Calendar.DAY_OF_MONTH, 1);
final int firstDay = _calendar.get(Calendar.DAY_OF_WEEK);
final int LocalFirstDay = (firstDay - _firstDayOfWeek + 7) % 7 + 1;
boolean full = false;
for (int i = 0; i < _daysNumber.length; ++i) {
//Determine si le composant est affiche ou non
final boolean isNotEmpty = i < LocalFirstDay - 1 || full;
_daysNumber[i].setVisible(!isNotEmpty);
// Affichage du jour
if (!isNotEmpty) {
final int dayOfMonth = _calendar.get(Calendar.DAY_OF_MONTH);
//apparitions et frequences des marches
if (dayOfMonth == M1)
{
var = var +"A";
M1 +=3;
}
if (dayOfMonth == M2)
{
var = var +"B";
M2 +=4;
}
if (dayOfMonth == M3)
{
var = var + "C";
M3 +=5;
}
if (dayOfMonth == M4)
{
var = var + "D";
M4 +=7;//frequences ....
}
_daysNumber[i].setText(String.valueOf(dayOfMonth)+var);
String f=var;
var = "";//retourne vide apres chaque execution
_calendar.add(Calendar.DAY_OF_MONTH, 1);
full = 1 == _calendar.get(Calendar.DAY_OF_MONTH);
}
}
_calendar.setTime(tmp);
}
public static void main(final String[] args)
throws SQLException {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame("I-ONE ");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new JCalendar());
frame.pack();
frame.setVisible(true);
}
});
}
//connexion
public void myconnection(){
Connection con = null;
String DB="med_consul"; // base de donnees
String sql = null;
Statement st=null;
try {
int n = JOptionPane.showOptionDialog(null, "Matin ou Soir ?", "Question", JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE, null, s, s[0]);
if (n!=-1)
{System.out.println(s[n]);
test1 = s[n];
}
else
System.out.println("Annulé");
Class.forName ("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException ex) {
Logger.getLogger(JCalendar.class.getName()).log(Level.SEVERE, null, ex);
}
try {
con=DriverManager.getConnection("jdbc:mysql://localhost/med_consul","root","");
//JOptionPane.showMessageDialog(null, "Votre choix est : ", test1, JOptionPane.INFORMATION_MESSAGE);
}catch (SQLException ex) {
Logger.getLogger(JCalendar.class.getName()).log(Level.SEVERE, null, ex);
}
try {
// création d'un objet Statement
st=con.createStatement();
// exécution d'une requête select
sql= "INSERT INTO 'rdv' (RDV,JourduMarche,Disponibilite) "+ "VALUES ('0','"+test0.getTest() +"','"+test1+"')";
} catch (SQLException ex) {
Logger.getLogger(JCalendar.class.getName()).log(Level.SEVERE, null, ex);
}
try {
st.executeUpdate(sql);
} catch (SQLException ex) {
Logger.getLogger(JCalendar.class.getName()).log(Level.SEVERE, null, ex);
}
try {
con.close();
} catch (SQLException ex) {
Logger.getLogger(JCalendar.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("Base " + DB + " fermée");
}
}
}
Par exemple (parmi bien d'autres) tu as un JButton[] _daysNumber, alors que _daysNumber[n] ne correspond pas au jour "n" du mois affiché !
Il serait plus logique de faire correspondre la date avec le bouton. D'ailleurs, mieux que les tableaux, tu as les Collection, tu pourrais par exemple utiliser une Map<Date,JButton> avec éventuellement une classe Date personnelle, qui prendrait en charge toutes les données que tu rajoutes au fur et à mesure (A, AB, etc.)
Tu n'aurais alors qu'à faire comme ceci :
PS. En Java, on n'a jamais des noms de variables avec des tirets "_"
La seule utilisation que l'on devrait en faire c'est pour séparer les mots des constantes comme dans "MAX_VALUE" par exemple...