queste sn le mie classi se può essere utile
Classe Calendario
	codice:
	
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;
import java.util.GregorianCalendar;
import interfaccia.Cella;
import interfaccia.Cella_giorno_settimana;
import javax.swing.BorderFactory;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel;
import javax.swing.border.LineBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class Calendario extends JPanel{
	
	
	private JComboBox combobox;
	private Cella[]days;
	private JSpinner spinner;
	private Cella_giorno_settimana[] week;
	
	 public Calendario(){
		
		this.setSize(Toolkit.getDefaultToolkit().getScreenSize());
		this.setLayout(new BorderLayout());
		this.setBorder(BorderFactory.createLineBorder(Color.black));
		
		//pannello che contiene la combobox e la spinner
		JPanel combospinnerpanel = new JPanel();
		FlowLayout layout = new FlowLayout(FlowLayout.LEFT,50,5);
		combospinnerpanel.setLayout(layout);
		//combobox
		ComboBoxModel jComboBox1Model = new DefaultComboBoxModel(new String[] { "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre","Ottobre", "Novembre", "Dicembre" });
		combobox = new JComboBox();
		combobox.setModel(jComboBox1Model);
		combobox.setBounds(14, 14, 98, 28);
		combospinnerpanel.add(combobox);
		combobox.addActionListener(new MioListener());
		//spinner
		Calendar calendar = new GregorianCalendar();
		int currentYear = calendar.get(Calendar.YEAR);
		SpinnerModel jSpinner1Model = new SpinnerNumberModel(currentYear,currentYear - 100,currentYear + 100,1);
		spinner = new JSpinner();
		spinner.setModel(jSpinner1Model);
		spinner.setEditor(new JSpinner.NumberEditor(spinner, "#"));
		spinner.setBorder(new LineBorder(new java.awt.Color(0,0,0), 1, false));
		spinner.getEditor().setBorder(new LineBorder(new java.awt.Color(0,0,0),1,false));
		spinner.getEditor().setEnabled(false);
		spinner.setBounds(495, 14, 98, 28);
		combospinnerpanel.add(spinner);
		spinner.addChangeListener(listener);
		this.add(combospinnerpanel,BorderLayout.NORTH);
		
		//pannello che contiene i giorni del mese (da 1 a 31)
		JPanel panelgiorni = new JPanel();
		
		GridLayout panelgiornilayout = new GridLayout(6, 7);
		panelgiornilayout.setHgap(5);
		panelgiornilayout.setVgap(5);
		panelgiornilayout.setColumns(7);
		panelgiornilayout.setRows(6);
		panelgiorni.setLayout(panelgiornilayout);
		this.add(panelgiorni,BorderLayout.SOUTH);
		//bottoni giorni da 1 a 31
		days = new Cella[42];
		
		for (int i=0; i<42;i++){
			 Cella cella = new Cella();
			 days[i]= cella;
			 
		 }
		for (int i=0; i<42; i++){
			
			panelgiorni.add(days[i]);
			days[i].clear(false);
			 
		}
		
		leggistatocombospinner();
		
		//pannello che contiene il nome dei giorni della settimana
		JPanel settpanel = new JPanel();
		GridLayout settpanellayout = new GridLayout(1,0);
		settpanellayout.setHgap(5);
		settpanellayout.setVgap(5);
		settpanellayout.setColumns(0);
		settpanellayout.setRows(1);
		settpanel.setLayout(settpanellayout);
		this.add(settpanel,BorderLayout.CENTER);
		
		//label giorni della settimana lun/mar/mer etc..
		
		week = new Cella_giorno_settimana[7];
		
		for (int i=0; i<7;i++){
			Cella_giorno_settimana cella = new Cella_giorno_settimana();
			 week[i]= cella;
		 }
		
        for (int i=0; i<7; i++){
			
        	settpanel.add(week[i]);
			
			 
		}
		String lun = new String("lun");
		week[0].setGiorno(lun);
		String mar = new String("mar");
		week[1].setGiorno(mar);
		String mer = new String("mer");
		week[2].setGiorno(mer);
		String gio = new String("gio");
		week[3].setGiorno(gio);
		String ven = new String("ven");
		week[4].setGiorno(ven);
		String sab = new String("sab");
		week[5].setGiorno(sab);
		String dom = new String("dom");
		week[6].setGiorno(dom);
		
		//this.add(combospinnerpanel,BorderLayout.NORTH);
		//this.add(panelgiorni,BorderLayout.CENTER);
		
	}
	 
	 public class MioListener implements ActionListener {
		   public void actionPerformed(ActionEvent ae) {
		      JComboBox jcb = (JComboBox) ae.getSource();
		      azzeracelle(); //azzero le celle della precedente visualizzazione per non creare sovrascrizioni
		      leggistatocombospinner();
		   }
	}
	 
	 ChangeListener listener = new ChangeListener() {
	      public void stateChanged(ChangeEvent e) {
	    	JSpinner js = (JSpinner) e.getSource();
	    	azzeracelle();
	    	leggistatocombospinner();
	      }
	}; 
	 
	 public void azzeracelle(){
			
			for (int i=0; i<42; i++)
				days[i].clear(false);
		}
	 public void leggistatocombospinner (){
			
			
			int mm= combobox.getSelectedIndex();
			int yy=((Integer)spinner.getValue()).intValue();
			setCalendario(yy,mm);
		}
	 
	 
	 public void setCalendario (int anno, int mese){
			
			GregorianCalendar c = new GregorianCalendar (anno,mese,1);
			int lastday = c.getActualMaximum (Calendar.DAY_OF_MONTH);
			int weekday = c.get (Calendar.DAY_OF_WEEK);
			int giorno = (weekday + 5) % 7;
			int maxday = giorno+(lastday-1);
		        for (int i=giorno, y=1; i<=maxday ;i++, y++){
		        	 
		        	days[i].clear(true);
		        	days[i].setGiorno(y);
		        }
		          
		}
	 
	 public static void main(String args[]) {
		    JFrame frame = new JFrame("Prova Pannello");
		    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		    Calendario panel = new Calendario();
		    frame.add(panel);
		    frame.setSize(616, 427);
		    frame.setVisible(true);
		  }
}
 
Classe Cella
	codice:
	        import java.awt.BorderLayout;
	import java.util.Calendar;
	import java.util.GregorianCalendar;
	import javax.swing.BorderFactory;
	import javax.swing.JButton;
        import interfaccia.Calendario;
	import javax.swing.JPanel;
	
	public class Cella extends JPanel {
		private int giorno;
		private JButton jButton1;
		//String days[] = {"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"};
		
		
		
		public Cella(){
		//private void initGUI() {
			try {
				
				
				
				
				{
					this.setPreferredSize(new java.awt.Dimension(78, 49));
					BorderLayout thisLayout = new BorderLayout();
					this.setLayout(thisLayout);
					{
						jButton1 = new JButton();
						this.add(jButton1, BorderLayout.CENTER);
						jButton1.setText("");
						jButton1.setBounds(0, 0, 105, 49);
						jButton1.setBorder(BorderFactory.createRaisedBevelBorder());
						
						jButton1.addActionListener(new java.awt.event.ActionListener() {
						public void actionPerformed(java.awt.event.ActionEvent e) {
							
							
							
						}
					});
					}
				}
				
			
			
			
			} catch (Exception e) {
				e.printStackTrace();
			}
		//}
		}
		
		public void setGiorno(int giorno){
			
			this.giorno=giorno;
			jButton1.setText(Integer.toString(giorno));
		}
		
        public int getGiorno(){
			
			return giorno;
		}
		
		public void clear(boolean flag){
			
			this.setVisible(flag);
		}
			
		}
 
praticamente la classe cella contiene un bottone, io vorrei che nn appena si clicchi sul bottone della cella mi restituisca la data nel formato gg/mm/aaaa, il problema è che il mese e l'anno li devo prendere dalla spinner e combobox della classe Calendario..e quindi nn so come fare.