PDA

View Full Version : [JAVA] Aggiornare i contenuti di un frame


semmy83
14-01-2010, 21:01
domanda:

ho un frame composto da diversi pannelli. in seguito a delle azioni implementate con delle action, ad es apri nuovo dato da visualizzare, il pannello centrale cambia il suo contenuto e quindi il frame deve essere aggiornato.
io ho sempre usato SwingUtilities.updateComponentreeUI(frame) dopo aver cambiato i riferimenti dei campi con i nuovi pannelli.
Ora invece non funziona in nessun modo! le ho provate davero tutte (repaint(), update(Graphics g), SwingUtilities.updateCom...(), SwingUtilities.invokeLater())
sia sul frame che sul pannello, ma a parte la costruzione del pannello nel costruttore del frame, la vista non viene moificata in alun modo in seguto all'azione.
avete suggerimenti? :help:
Ovviamente la logica è ok e verificata....
ve ne sarò grato :D

banryu79
15-01-2010, 10:09
vedi se revalidate+repaint aiuta; oppure removeAll sul contenitore parent dei tuoi pannelli e li inserisci di nuovo (metodo add).

semmy83
15-01-2010, 15:26
vedi se revalidate+repaint aiuta; oppure removeAll sul contenitore parent dei tuoi pannelli e li inserisci di nuovo (metodo add).

niente da fare...nella action faccio cosi:

frame.setVisible(false);
frame.removeAll();
RubricaFormPanel rfp = new RubricaFormPanel(frame.panelOvest, frame.panelSud,
new PannelloCentrale("Nessun Contatto presente nella rubrica"));
frame.rubricapanel = rfp;
frame.add(rfp);
frame.setVisible(true);

ovviamente ho provato pure a fare:

frame.removeAll();
RubricaFormPanel rfp = new RubricaFormPanel(frame.panelOvest, frame.panelSud,
new PannelloCentrale("Nessun Contatto presente nella rubrica"));
frame.rubricapanel = rfp;
frame.add(rfp);
frame.repaint();

ma niente dopo l'action il pannello dei contenuti rimane visibile ma inattivo, non risponde piu agli eventi.

banryu79
15-01-2010, 15:46
Non hai provato con revalidate:

frame.removeAll();
RubricaFormPanel rfp = new RubricaFormPanel(frame.panelOvest, frame.panelSud,
new PannelloCentrale("Nessun Contatto presente nella rubrica"));
frame.rubricapanel = rfp;
frame.add(rfp);
frame.revalidate();

semmy83
15-01-2010, 16:09
Non hai provato con revalidate:

frame.removeAll();
RubricaFormPanel rfp = new RubricaFormPanel(frame.panelOvest, frame.panelSud,
new PannelloCentrale("Nessun Contatto presente nella rubrica"));
frame.rubricapanel = rfp;
frame.add(rfp);
frame.revalidate();


niente da fare:

frame.remove(frame.rubricapanel);
RubricaFormPanel rfp = new RubricaFormPanel(frame.panelOvest, frame.panelSud,
new PannelloCentrale("Nessun Contatto presente nella rubrica"));
frame.rubricapanel = rfp;
frame.add(rfp, BorderLayout.CENTER);
frame.validate();

nemmeno a pagarlo...exception in EventQueue.... :cry:

banryu79
15-01-2010, 17:04
Prova a postare un po' di codice se ti va, così vediamo come è impostata tutta l'interfaccia e le relazioni nel codice tra i pannelli, il loro contenuto e il frame che contiene tutto l'ambaradam...