Calendar

ultrarich2001 Messages postés 72 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,
j'aimerais changer la couleur de la date du jour en rouge dans mon calendrier
merci pour l'aide

A voir également:

1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
Ça dépend comment tu as fait ton calendrier...
1
ultrarich2001 Messages postés 72 Statut Membre
 
je me perds dans le code qui permettra de le faire je sais que je dois mettre cela au niveau de l'affichage du calendrier .
0
ultrarich2001 Messages postés 72 Statut Membre
 
Si tu as une idee je suis partant !!!!!! merci d'avance
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Exemple rapide :

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".
0
ultrarich2001 Messages postés 72 Statut Membre
 
Ok ,je vois le mieux voici mon code c'est un peut touffu

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");
}
}
}
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Alors c'est très moche, mais je crois que je te l'avais déjà dit dans un autre de tes messages (je ne sais plus), parce que tu ne sépares pas les données de l'affichage, tout est là, un peu en vrac, sans avoir vraiment de cohérence...

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 :
daysNumber.get(tmp).setForeground(Color.Red);
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...
0