31. maj 2010 - 11:52Der er
6 kommentarer og 1 løsning
Locale.setDefault on the fly ændrer ikke tekst i f.eks. JFileChooser
Jeg har en applikation, hvor brugeren har mulighed for at skifte sprog on the fly. Når det sker, så kalder jeg "Locale.setDefault" med deres valg, men det har ingen effekt, når jeg efterfølgende åbner en ny JFileChooser, hvor teksterne stadig er i det oprindelige sprog.
Hvis jeg bruger Locale.setDefault ved opstart af applikationen, kan jeg godt styre teksterne i f.eks. JFileChooser.
Hvad mangler jeg at gøre for at få det til at fungere on the fly?
Ja, det var naturligvis en mulighed, men det er en større applikation med små 100.000 linjers kode, som startede ud som en et-sprog applikation og nu skal gøres multisproget. Så jeg vil meget gerne undgå at skulle hele applikationen igennem for at finde objekter, som skal tvangsfodres med en ændret Locale...
Jeg havde forventet, at man nemt kunne ændres Locale on the fly ved f.eks. blot at kalde en set-/update metode - og håber fortsat, at det er en mulighed.
Du (arne_v) har ledt mig i den rigtige retning, da du naturligvis har ret i, at jeg kan optage eksisterende J-objekter ved rekursivt at kalde setLocale(Locale) på dem.
Jeg havde dog det yderligere problem, at jeg ikke kunne forstå, hvorfor nye J-objekter (såsom JFileChooser) fortsat havde den oprindelige Locale, når jeg forinden initialiseringen af dem havde kaldt Locale.setDefault(Locale). Men hvis jeg kalder JComponent.setDefaultLocale(Locale), så forsvinder problemet, og nye JFileChoosers bliver initialiseret med den rette Locale.
Jeg forstår dog ikke, hvorfor Locale.setDefault(Locale) ikke gør jobbet i sig selv, men det kan du måske forklare mig?
Under alle omstændigheder må du gerne smide et svar, så jeg kan belønne dig.
"Du (arne_v) har ledt mig i den rigtige retning, da du naturligvis har ret i, at jeg kan opdatere eksisterende J-objekter ved rekursivt at kalde setLocale(Locale) på dem."
Hvis Locale.setDefault ikke virker men JComponent.SetDefaultLocale gør så tyder det på at der sættes en static variabel med Locale meget tidligt f.eks. når første class som arver fra Jetellerandet loades.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.