[Java] Refresh dei componenti

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
Berghem
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2265
Iscrizione: giovedì 14 aprile 2005, 22:28
Località: Dalmen

[Java] Refresh dei componenti

Messaggio da Berghem »

non capisco il perchè spesso ho problemi nel refresh dei componenti, nel mio esempio costruisco un calendario, quando dal combobox seleziono il mese che voglio visualizzare, il calendario viene visto, ma mancano gli ultimi giorni del mese.....

posto immagini e codice

Codice: Seleziona tutto

private void InitComponent(){
		pnlGenerale = new JPanel();
		pnlGenerale.setLayout(null);
		
		cmbMese = new JComboBox();
		cmbMese.setSize(120,30);
		cmbMese.setLocation(10,10);
		
		pnlGenerale.add(cmbMese);
		cmbMese.removeAllItems();
		for (int i=1;i<13;i++){
			cmbMese.addItem(i);
		}
		
		cmbMese.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
            	cmbMeseClick(evt);
            }
        });
		this.add(pnlGenerale);
		
		calendario = new MonthCalendarImpl();
		calendario.setSize(800,800);
		calendario.setLocation(10,50);
		pnlGenerale.add(calendario);		
	}
	
	private void cmbMeseClick(java.awt.event.ItemEvent evt){
		int liMese;
		liMese = cmbMese.getSelectedIndex();
		calendario.setMonth(liMese);
	}
Allegati
img2.JPG
img1.JPG
Avatar utente
Berghem
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2265
Iscrizione: giovedì 14 aprile 2005, 22:28
Località: Dalmen

Re: [Java] Refresh dei componenti

Messaggio da Berghem »

Qualcuno potrebbe spiegarmi come potrei fare (visto che non riesco a risolvere il mio problema) a distruggere il componente (solo se non è istanziato) e a ricrearlo?
mokup
Prode Principiante
Messaggi: 86
Iscrizione: giovedì 10 agosto 2006, 20:01

Re: [Java] Refresh dei componenti

Messaggio da mokup »

Quando aggiorni il pannello prova a chiamare:

pnlGenerale.repaint()
Avatar utente
Berghem
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2265
Iscrizione: giovedì 14 aprile 2005, 22:28
Località: Dalmen

Re: [Java] Refresh dei componenti

Messaggio da Berghem »

Ho provato ma nulla... ho provato sia sul pannello che sul calendario, vedo solo una parte del mese...
e non capisco il perchè... >:(

Venendo dalla programmazione Delphi farei una cosa del genere

if calendario nil then
  calendario.free;

e poi lo ricreo...

non sarebbe ottimale, ma almeno funzionerebbe...
mokup
Prode Principiante
Messaggi: 86
Iscrizione: giovedì 10 agosto 2006, 20:01

Re: [Java] Refresh dei componenti

Messaggio da mokup »

Avatar utente
Berghem
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2265
Iscrizione: giovedì 14 aprile 2005, 22:28
Località: Dalmen

Re: [Java] Refresh dei componenti

Messaggio da Berghem »

ok, forse ho sistemato ()...
Mi sai dire perchè quando cambio la scelta del combobox entra 2 volte (me ne sono accorto in debug) nella funzione cmbMeseClick?

Codice: Seleziona tutto

public class DatePicker extends JFrame {
	JPanel pnlGenerale;
	JComboBox cmbMese;
	MonthCalendarImpl calendario;
	Date data;
	public DatePicker() {
        super();
		
		this.setTitle("date");
		this.setPreferredSize(new Dimension(1000,200));
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		pnlGenerale = new JPanel();
		pnlGenerale.setLayout(null);
		this.add(pnlGenerale);
		
		InitComponent(0);
		
		pack();
		setVisible(true);
	}

	/**
	 * @param args
	 */
	
	private void InitComponent(int liMese){
		cmbMese = new JComboBox();
		cmbMese.setSize(120,30);
		cmbMese.setLocation(10,10);
		
		pnlGenerale.add(cmbMese);
		cmbMese.removeAllItems();
		for (int i=1;i<13;i++){
			cmbMese.addItem(i);
		}
		
		cmbMese.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
            	cmbMeseClick(evt);
            }
        });
		
		calendario = new MonthCalendarImpl(2008,liMese);
		calendario.setSize(800,800);
		calendario.setLocation(10,50);
		pnlGenerale.add(calendario);
	}

	public String dateToString (Date dateFormat, String format) {
			if (dateFormat==null) 
				return null;
			SimpleDateFormat formatter = new SimpleDateFormat(format);
			return formatter.format(dateFormat);
		}
	
	private void cmbMeseClick(java.awt.event.ItemEvent evt){
		int liMese;
		liMese = cmbMese.getSelectedIndex();
		pnlGenerale.removeAll();
		InitComponent(liMese+1);		
		
		pnlGenerale.repaint();
		pnlGenerale.validate();
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		DatePicker pippo = new DatePicker(); 
		

	}
}
Avatar utente
Berghem
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2265
Iscrizione: giovedì 14 aprile 2005, 22:28
Località: Dalmen

Re: [Java] Refresh dei componenti

Messaggio da Berghem »

nulkla da fare... continua a mostrarmi solo una parte del calendario...
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti