2012-03-28 7 views
1

Ich baue einen Texteditor in Java (Swing) mit einem EditorPane, um den Text und ein Menü mit JRadioButtonMenuitems einzugeben. Wie das Menü ist "Sprache" und JRadiobuttonMenuitems unter "Sprache" sind "Spanisch", "Japanisch", "Englisch" etc Das Szenario ist, dass, wenn der Benutzer klickt und wählen Sie JRadioButtonMenuItem das System muss seine IME wie ausgewählt ändern Sprache. Wenn der Benutzer klickt und japanische Option auswählt, muss der IME für den aktuellen Prozess in Japanisch geändert werden, damit der Benutzer Text in der entsprechenden Sprache eingeben kann.Ändern der IME-Sprache in Java-Swing-Anwendung

Ich habe den richtigen IME installiert. Manuell kann ich den IME ändern und in eine Swing-Komponente schreiben. aber mein Problem ist, wie man den IME programmatisch lädt.

Momentan baue ich diese Anwendung unter WindowsXP, möchte aber, dass diese Anwendung die IME-Sprache für jedes Betriebssystem ändert.

Ich habe google es, aber hat keine verwandten Informationen gefunden, um IME zu ändern.

Dank

+0

Gibt es eine Möglichkeit, dies zu tun? Ich fand, dass InputMethod-Schnittstelle verwendet werden kann, um die Sprache Eingabemethode zu ändern, aber nicht wissen, wie das geht. –

Antwort

3

IME Sprache für die JEditorPane geändert werden kann, eine InputContext Instanz und übergeordnete getInputContext Methode für JEditorPane indem sie mögen.

final InputContext context = InputContext.getInstance(); 

jEditorPaneMain = new javax.swing.JEditorPane() 
    { 
     @Override 
     public InputContext getInputContext() { 
      return context; 
     } 
    }; 

und zur Auswahl einer Sprache wie auf Klick des japanischen JRadioButtonMenuItem eine Action

jRadioButtonMenuItemJapanese.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jRadioButtonMenuItemJapaneseActionPerformed(evt); 
      } 
     }); 

gehen Sie wie folgt innerhalb Ereignishandler hinzuzufügen.

private void jRadioButtonMenuItemJapaneseActionPerformed(java.awt.event.ActionEvent evt) {                
     context.selectInputMethod(Locale.JAPANESE); 

} 

Ich habe dies auf Windows XP ausprobiert. Es funktioniert vollkommen in Ordnung.