JCalendar [Fermé]

Signaler
-
 ultrarich2001 -
Bonjour,
j'aimerais recuperer le nom du jour soit lundi ou mardi quand je selectionne un bouton du calendrier


3 réponses


je veux juste recuperer le nom du jour soit lundi ou mardi juste en cliquant sur le numero voici mon code

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DateFormatSymbols;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
import javax.swing.*;


public class JCalendar extends JPanel implements ActionListener {

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];

private final ActionListener _changeMonth = new ActionListener() {
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)
dayPanel.add(_daysNumber[i] = new JButton());
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 numéro 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) {
//Détermine si le composant est affiché 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);
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 ParseException {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new JCalendar());
frame.pack();
frame.setVisible(true);

}
});
}

@Override
public void actionPerformed(ActionEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 78006 internautes nous ont dit merci ce mois-ci


oui ca marche!!!!!!!!!! mais il affiche plutot 2A eu lieu de lun ou lundi tu as une idée de ce ki ne va pas

Je peux ajouter deux JLabel plus deux checkbox sue le fenetre qui montre le message c'est possible ?
Messages postés
16233
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 juin 2020
2 618
Non, pour l'instant j'ai juste récupéré le nom du bouton (15A par exemple), mais si tu arrives à retrouver à quelle colonne appartient le bouton, alors oui tu auras récupérer le jour.

Sinon, il faudra créer une petite classe qui dérive de JButton où tu stockerais explicitement la date correspondante, et éventuellement d'autres informations si tu veux faire une sorte d'agenda...

Tu l'as dit je voudrais en sommes faire un agenda electronique avec une base de donnee soit sql ou access qui en selectionnant le jour une fenetre apparait et demande de coonfirme si c'est matin ou soir avec un bouton validez et enregistre le validation dans un fichier txt dans la base ou sur un server tu vois c'est gros pour un debutant mais je dois le faire et ton aide vraiment vient a point nomme

Bjr KX, ben merci pour hier et le code fonctionne ,t'as pu ébaucher une solution pour moi vu ma préoccupation ? j'apprécie
ton aide
Messages postés
16233
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 juin 2020
2 618
JCalendar (ou jCalendar ?) n'est pas standard, ni en Java, ni en jQuery...

Donc regarde la documentation de la bibliothèque Java ou du plugin jQuery que tu utilises, ou reportes toi à des outils standards comme Date Picker.
Messages postés
623
Date d'inscription
vendredi 26 juillet 2002
Statut
Membre
Dernière intervention
11 novembre 2012
967
Salut!

Essaie ceci:

package hacktrack.jcalendar;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DateFormatSymbols;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class JCalendar2 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];

	private final ActionListener _changeMonth = new ActionListener() {
		public void actionPerformed(final ActionEvent ae) {
			final int nb = "next".equals(ae.getActionCommand()) ? 1 : -1;
			_calendar.add(Calendar.MONTH, nb);
			updateMonthYear();
			updateDaysNumber();
		}
	};

	public JCalendar2() {
		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)
			dayPanel.add(_daysNumber[i] = new JButton());
		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 numéro 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) {
			// Détermine si le composant est affiché 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 ....
				}

				Day day = new Day(_calendar.getTime());
				_daysNumber[i].setAction(day);
				_daysNumber[i].setText(day.toString());
				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 class Day extends AbstractAction{
		private String name;
		private Date date;
		
		public Day(Date date){
			this.date=date;
			
		}

		@Override
		public String toString() {
			return new SimpleDateFormat("d").format(date);
		}

		@Override
		public void actionPerformed(ActionEvent e) {
			GregorianCalendar calendar = new GregorianCalendar();
			calendar.setTime(date);
			String dayName = calendar.getDisplayName(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.LONG, new Locale("fr"));
			dayName=dayName.substring(0,1).toUpperCase()+dayName.substring(1);
			JOptionPane.showMessageDialog(null,dayName);
			
		}
	}

	public static void main(final String[] args) throws ParseException {
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				JFrame frame = new JFrame();
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.getContentPane().add(new JCalendar2());
				frame.pack();
				frame.setVisible(true);

			}
		});
	}

}



;-)

trop cool !! merci bocoup , j'ai aime ta reponse et cela marche maintenant il faut ke je connecte mon code java a ma base de donnee MySQL ,tu peux me help car depuis KX ne me repond plus .tu m'excuses bocoup mais la connection beugait grave

je suis connecte