Bonjour,
Voici un programme java qui affiche un calendrier. Problème : sous windows, les setBackground(Color) (une couleur en paramètre) marche bien, mais une fois sous mac, quénéni !
que faire ?
package cal;
import java.awt.*;
import javax.swing.*;
import java.util.*;
public class Calendrier extends javax.swing.JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
private static final String[] jour = { "dim", "lun", "mar", "mer", "jeu", "ven", "sam"};
private static final String[] mois = {"janvier","fÈvrier","mars","avril","mai","juin","juillet","ao˚t","septembre","octobre","novembre","dÈcembre"};
private int annee;
private int nummois;
private int numjour;
private JPanel centre;
public Calendrier(){
this.setLayout(new BorderLayout());
JPanel n = new JPanel(new GridLayout(2,1));
n.add(ligne1());
n.add(ligne2());
this.add(n, "North");
centre=centre();
this.add(centre);
setCalendrier();
}
public JPanel ligne1() {
Calendar cal=new GregorianCalendar();
annee=cal.get(Calendar.YEAR);
nummois=cal.get(Calendar.MONTH);
numjour=cal.get(Calendar.DAY_OF_MONTH);
String m;
m=mois[nummois];
JPanel p1 = new JPanel (new GridLayout(1,4));
JButton flecheG = new JButton (new ImageIcon("flechegauche.gif"));
p1.add(flecheG);
JLabel l1 = new JLabel(m, JLabel.CENTER);
p1.add(l1);
JLabel l2 = new JLabel(Integer.toString(annee), JLabel.CENTER);
p1.add(l2);
JButton flecheD = new JButton (new ImageIcon("flechedroite.gif"));
p1.add(flecheD);
//flecheG.addActionListener(new Precedent());
//flecheD.addActionListener(new Suivant());
return p1 ;
}
JPanel ligne2(){
JPanel p2 = new JPanel (new GridLayout(1,7));
for(int i=0; i<jour.length; i++){
JLabel j= new JLabel(jour, JLabel.CENTER);
p2.add(j);
}
return p2;
}
JPanel centre(){
JPanel p3 = new JPanel (new GridLayout(0,7));
return p3;
}
private void setCalendrier() {
Calendar Cal = new GregorianCalendar(annee,nummois,1);
int n1p = Cal.get(Calendar.DAY_OF_WEEK);
int nbj = Cal.getActualMaximum(Calendar.DAY_OF_MONTH);
centre.removeAll();
for(int i=1; i<n1p;i++){
JButton b = new JButton();
b.setEnabled(false);
centre.add(b);
}
for (int i = 1; i <= nbj; i++) {
if(i==numjour){
JButton a = new JButton(Integer.toString(i));
a.setBackground(Color.red);
centre.add(a);
}else{
JButton j = new JButton(Integer.toString(i));
centre.add(j);
}
}
centre.validate();
centre.repaint();
}
}
ET :
package cal;
import javax.swing.*;
public class PPCalendrier extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
public PPCalendrier(){
this.setTitle("Calendrier");
this.setBounds(10,10,370,240);
Calendrier c = new Calendrier();
this.add(c, "Center");
this.setVisible(true);
}
public static void main(String[] args){
new PPCalendrier();
}
}
Pouvez vous m'aider ?
Merci d'avance
Jérôme
Voici un programme java qui affiche un calendrier. Problème : sous windows, les setBackground(Color) (une couleur en paramètre) marche bien, mais une fois sous mac, quénéni !
que faire ?
package cal;
import java.awt.*;
import javax.swing.*;
import java.util.*;
public class Calendrier extends javax.swing.JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
private static final String[] jour = { "dim", "lun", "mar", "mer", "jeu", "ven", "sam"};
private static final String[] mois = {"janvier","fÈvrier","mars","avril","mai","juin","juillet","ao˚t","septembre","octobre","novembre","dÈcembre"};
private int annee;
private int nummois;
private int numjour;
private JPanel centre;
public Calendrier(){
this.setLayout(new BorderLayout());
JPanel n = new JPanel(new GridLayout(2,1));
n.add(ligne1());
n.add(ligne2());
this.add(n, "North");
centre=centre();
this.add(centre);
setCalendrier();
}
public JPanel ligne1() {
Calendar cal=new GregorianCalendar();
annee=cal.get(Calendar.YEAR);
nummois=cal.get(Calendar.MONTH);
numjour=cal.get(Calendar.DAY_OF_MONTH);
String m;
m=mois[nummois];
JPanel p1 = new JPanel (new GridLayout(1,4));
JButton flecheG = new JButton (new ImageIcon("flechegauche.gif"));
p1.add(flecheG);
JLabel l1 = new JLabel(m, JLabel.CENTER);
p1.add(l1);
JLabel l2 = new JLabel(Integer.toString(annee), JLabel.CENTER);
p1.add(l2);
JButton flecheD = new JButton (new ImageIcon("flechedroite.gif"));
p1.add(flecheD);
//flecheG.addActionListener(new Precedent());
//flecheD.addActionListener(new Suivant());
return p1 ;
}
JPanel ligne2(){
JPanel p2 = new JPanel (new GridLayout(1,7));
for(int i=0; i<jour.length; i++){
JLabel j= new JLabel(jour, JLabel.CENTER);
p2.add(j);
}
return p2;
}
JPanel centre(){
JPanel p3 = new JPanel (new GridLayout(0,7));
return p3;
}
private void setCalendrier() {
Calendar Cal = new GregorianCalendar(annee,nummois,1);
int n1p = Cal.get(Calendar.DAY_OF_WEEK);
int nbj = Cal.getActualMaximum(Calendar.DAY_OF_MONTH);
centre.removeAll();
for(int i=1; i<n1p;i++){
JButton b = new JButton();
b.setEnabled(false);
centre.add(b);
}
for (int i = 1; i <= nbj; i++) {
if(i==numjour){
JButton a = new JButton(Integer.toString(i));
a.setBackground(Color.red);
centre.add(a);
}else{
JButton j = new JButton(Integer.toString(i));
centre.add(j);
}
}
centre.validate();
centre.repaint();
}
}
ET :
package cal;
import javax.swing.*;
public class PPCalendrier extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
public PPCalendrier(){
this.setTitle("Calendrier");
this.setBounds(10,10,370,240);
Calendrier c = new Calendrier();
this.add(c, "Center");
this.setVisible(true);
}
public static void main(String[] args){
new PPCalendrier();
}
}
Pouvez vous m'aider ?
Merci d'avance
Jérôme