il problema sta cominciando serio...

allora: chiamo il metodo update così
codice:
public void updateLanguage(JPanel panel, int lang) {
passando il frame principale che al suo interno contiene 3 altri panel a loro volta contenenti annidati i componenti jbutton, jlabel, jradiobutton.

quindi quando tento di scrivere nell'update
codice:
Component[] c = panel.getComponents();
		for (int i = 0; i < c.length; i++) {
			System.out.println((String) c[i].toString());
		  if (c[i] instanceof JLabel) {
		  	((JButton)c[i]).setText( getLabel( (String) c[i].toString() ) );
		  } else if (c[i] instanceof JMenu) {
		  	((JButton)c[i]).setText( getLabel( (String) c[i].toString() ) );
		  } else if (c[i] instanceof JButton) {
		  	((JButton)c[i]).setText( getLabel( (String) c[i].toString() ) );
		  } else if (c[i] instanceof JRadioButton) {
		  	((JButton)c[i]).setText( getLabel( (String) c[i].toString() ) );
		  }
		}
giustamente non ottengo nulla in quanto trovo 3 pannelli soltanto. da notare che in questo modo perdo traccia della barra della barra dei menu... non contenuta nel panel passato (credo).

la getLabel è così fatta:
codice:
	public String getLabel(String s) {
		String translation = (String)h.get(s);
		return translation;
	}

PS - getLabel e updateLanguage per coerenza li ho messi tutti e due nella classe "Language" ma la chiamata a tali metodi non è un problema.

la getLabel ha quella forma che gradirei non venisse cambiata in quanto cmq mi fa le prime assegnazioni. La chiamo infatti nel seguente modo:
codice:
sendButton.setText(lang.getLabel("sendButton"));
NOTA - h, contenente l'intero dizionario, è una Hashtable che inizializzo (o svuoto e ripopolo) al settaggio/cambio di lingua con metodi testati e funzionanti.

praticamente se risolvessi il problema dell'update avrei finito... ma come riuscire a togliere il "SE" ?