Pagina 3 di 3 primaprima 1 2 3
Visualizzazione dei risultati da 21 a 22 su 22
  1. #21
    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" ?

  2. #22
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    44
    Non so se ho capito esattamente quello che intendi però se il problema è solo quello che richiamando il getComponents() dal pannello principale ti restituisce solo i tre panel annidati basta che tu richiami il metodo updateLanguage per ognuno dei tre pannelli contenenti i componenti da "tradurre", devi cioè richiamare updateLanguage tre volte passandogli ogni volta il referimento al panel che vuoi elaborare.

    Il metodo getLabel invece credo che vada benissimo così.

    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.