il problema sta cominciando serio...
allora: chiamo il metodo update cosìpassando il frame principale che al suo interno contiene 3 altri panel a loro volta contenenti annidati i componenti jbutton, jlabel, jradiobutton.codice:public void updateLanguage(JPanel panel, int lang) {
quindi quando tento di scrivere nell'update
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).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() ) ); } }
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:
NOTA - h, contenente l'intero dizionario, è una Hashtable che inizializzo (o svuoto e ripopolo) al settaggio/cambio di lingua con metodi testati e funzionanti.codice:sendButton.setText(lang.getLabel("sendButton"));
praticamente se risolvessi il problema dell'update avrei finito... ma come riuscire a togliere il "SE" ?![]()

Rispondi quotando