Dynamic Resources

Dynamic Resources

Motivation:
Jeg har ønsket at finde en nem måde at ændre f.eks. sprog i mine aplikationer.

Problemet:
Ændringer til sprog i en kørende aplikation skulle laves så tilføjelser af nye sprog ikke ville kræve en genkompilering af programmet.
I det følgende eksempel vil jeg vise hvordan man ved brug af dynamiske resourcer - i dette tilfælde .properties filer, kan ændre udseendet på GUI.

Løsning:
Sourcekode til eksempel:
JavaSource.zip

Klassen MyFrame.java sammensætter GUI'en.
Det der skal bemærkes her er at den implementerer interfacet Observer.
I metoden actionPerformed( ActionEvent e ) holdes der øje med events fra de tre komponenter der bestemmer hvilket sprog der bruges.
Objektet LanguageObserver kaldes så med det nye sprog.
I metoden Update() modtages notificeringer fra LanguageObserver om at sproget er ændret og et array indeholdende det nye sprog modtages.
Her ændres så sproget i alle komponenterne.

Klassen LanguageObserver er den anden del af Observer mønstret og implementerer interfacet Observable.
Den læser sprogene til GUI komponenterne fra resource filer.
Dette sker i metoden constructArrays( Locale locale ).
Den modtager en Locale, der bestemmer hvilket sprog der læses.
Metoden setLanguage kaldes så fra MyFrame og sproget ændres.
Når dette er sket notificerer LanguageObserver sine listeners (I dette tilfælde MyFrame) om at GUI'en skal opdateres.
Det er oprettet et array af Locales.
De bruges til at få ResourceBundle objektet til at vælge det rigtige sprog.