Bonjour,

J'ai une interface graphique avec un JTable et des checkbox, je souhaiterais griser des colonnes lorsque des checkbox sont cochées.
Si samedi est coché, on grise tout les samedis
Si dimanche est coché, on grise tout les dimanches

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
public class CalendarWeekViewer extends JPanel implements ActionListener, ItemListener {
 
    Calendar calendar;
    DateFormat dateFormatter;
 
    CalendarWeekTableModel tableModel;
 
    JLabel monthLabel, yearLabel;
    JTable table;
    int anneeChoisit;
    private WeekPanel weekPanel;
 
	public CalendarWeekViewer(String uneAnnee) {
		Annee annee = new Annee();
		anneeChoisit = annee.anneeChoisit(uneAnnee);
		int anneeDefinitif = 0;
        calendar = Calendar.getInstance();
		int anneeActuelle;
		anneeActuelle = calendar.get(Calendar.YEAR);
		if(anneeActuelle < anneeChoisit){
			anneeDefinitif = anneeChoisit - anneeActuelle; 
			calendar.add(Calendar.YEAR, +anneeDefinitif);
		}else if(anneeActuelle > anneeChoisit){
			anneeDefinitif = anneeActuelle - anneeChoisit;
			calendar.add(Calendar.YEAR, -anneeDefinitif);
		}else{
			calendar.add(Calendar.YEAR, 0);
		}
 
        calendar.set(Calendar.MONTH,Calendar.SEPTEMBER); // on se positionne sur le mois de septembre (le début de notre liste de semaines)    	   
        calendar.set(Calendar.WEEK_OF_MONTH, 1); // on se positionne sur la première semaine du mois
        calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek()); // on se positionne sur le premier jour officiel
 
        dateFormatter = new SimpleDateFormat("MMMM yyyy");
        createComponents();
    }
 
    private void createComponents() {
    	JCheckBox saturdayCheck = new JCheckBox("Samedi");
    	JCheckBox sundayCheck = new JCheckBox("Dimanche");
    	JLabel holidays = new JLabel("Jours Non-ouvrés");
    	JPanel checkBox = new JPanel();
    	checkBox.add(saturdayCheck);
    	checkBox.add(sundayCheck);
 
    	saturdayCheck.addItemListener(this);
    	sundayCheck.addItemListener(this);
        yearLabel = new JLabel("Année : "+anneeChoisit+ "-"+(anneeChoisit+1));
        yearLabel.setFont(new Font(null, Font.BOLD, 20));
 
        monthLabel = new JLabel(getWeekLabel());
        monthLabel.setFont(new Font(null, Font.PLAIN, 18));
        monthLabel.setVerticalAlignment(JLabel.CENTER);
        monthLabel.setHorizontalAlignment(JLabel.CENTER);
 
        tableModel = new CalendarWeekTableModel(calendar);
        table = new JTable((TableModel)tableModel);
        table.setPreferredScrollableViewportSize(new Dimension(1400, 600));
        table.setDefaultRenderer(String.class, new CalendarWeekRenderer());
        table.setRowHeight(200);
        TableColumnModel tableColumnModel = table.getColumnModel();
        for (int i=0; i < tableColumnModel.getColumnCount(); ++i) {
            TableColumn tableColumn = tableColumnModel.getColumn(i);
            tableColumn.setPreferredWidth(200);
        }
 
        JScrollPane tableScrollPane = new JScrollPane(table);
 
        JPanel southPanel = new JPanel(new BorderLayout()); // le panel intermédiaire
 
        // on créé le weekPanel	
        weekPanel = new WeekPanel(this, calendar);
        // on met le weekPanel dans le panel intermédiaire
        southPanel.add(weekPanel, BorderLayout.SOUTH);
        JPanel panneau1 = new JPanel(new BorderLayout());
        panneau1.setPreferredSize(new Dimension(1400, 600));
        panneau1.add(monthLabel, BorderLayout.NORTH);
        panneau1.add(tableScrollPane, BorderLayout.CENTER);
        panneau1.add(southPanel, BorderLayout.SOUTH);
        JPanel panneau3 = new JPanel(new BorderLayout());
        JPanel panneau2 = new JPanel(new BorderLayout());
        panneau2.add(yearLabel, BorderLayout.WEST);
        panneau2.add(checkBox, BorderLayout.EAST);
        panneau3.add(panneau2, BorderLayout.NORTH);
        panneau3.add(panneau1);
        this.add(panneau3);
    }
 
    public void setWeek(Calendar selection) {
    	calendar.setTime( selection.getTime());
            monthLabel.setText(getWeekLabel());
        	tableModel.fireTableStructureChanged(); 
        	weekPanel.updateSelection();
    }
 
    private String getWeekLabel() {
 
    	Calendar calendar = Calendar.getInstance(); // on créé un nouveau calendar pour pas modifier le calendar qui nous sert pour savoir quelle semaine on affiche
    	calendar.setTime(this.calendar.getTime()); // on recopie dedans la date actuellement mise dans le calendar qui ser pour savoir quelle semaine on affiche
 
    	int week = calendar.get(Calendar.WEEK_OF_YEAR); // on récupère le numéro de la semaine
 
        // le premier jour de cette semaine
    	Date premierJour = calendar.getTime();
    	int monthPremierJour = calendar.get(Calendar.MONTH); // bug ici (il y avait int monthPremierJour = calendar.get(Calendar.MONDAY); donc n'importe quoi)!!!
 
        // le dernier jour de cette semaine
    	calendar.add(Calendar.WEEK_OF_YEAR, 1);
    	calendar.add(Calendar.DAY_OF_WEEK, -1);
    	Date dernierJour = calendar.getTime();
 
    	int monthDernierJour = calendar.get(Calendar.MONTH);
 
    	return WeekPanel.getWeekLabel(week, premierJour, dernierJour, monthPremierJour, monthDernierJour); 
    }
 
	public void actionPerformed(ActionEvent arg0) {
 
	}
 
	@Override
	public void itemStateChanged(ItemEvent arg0) {
 
 
	}
}