Hi Leute,
Ich hab ein kleines Progi geschrieben mit dem ich eigentlich testen wollte wie ich die Menüeinträge nach dem Sprache umschalten aktualisiere. Aber ich komme nichtmal soweit.
Eigentlich sollte er doch beim Start schon die deutschen Texte verwenden oder? Hab ich da was falsch verstanden, oder falsch programmiert?
Ich denke es ist für Euch am einfachsten wenn ich alles in ein jar packe und es hier
http://stud3.tuwien.ac.at/~e0004876/files/kskb_properties_14.6.07.jar
rauflade.
Zusätzlich stell ich den Code auch noch hier als Text rein.
Die Frage in kurz: Warum bleibt die Sprache englisch obwohl ich gleich am Anfang setLocale(Locale.GERMAN) aufrufe?
beste Grüße und Danke für die Anteilnahme
Andi
die main
das Menü
Die Klasse Message (automatisch erstellt durch "externalize Strings" von eclipse)
Ich hab ein kleines Progi geschrieben mit dem ich eigentlich testen wollte wie ich die Menüeinträge nach dem Sprache umschalten aktualisiere. Aber ich komme nichtmal soweit.
Eigentlich sollte er doch beim Start schon die deutschen Texte verwenden oder? Hab ich da was falsch verstanden, oder falsch programmiert?
Ich denke es ist für Euch am einfachsten wenn ich alles in ein jar packe und es hier
http://stud3.tuwien.ac.at/~e0004876/files/kskb_properties_14.6.07.jar
rauflade.
Zusätzlich stell ich den Code auch noch hier als Text rein.
Die Frage in kurz: Warum bleibt die Sprache englisch obwohl ich gleich am Anfang setLocale(Locale.GERMAN) aufrufe?
beste Grüße und Danke für die Anteilnahme
Andi
die main
Code:
import java.awt.Dimension;
import java.awt.GridLayout;
import java.util.Locale;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
public class TestLanguage_Main extends JFrame{
private final Dimension SIZE = new Dimension(400,300);
public TestLanguage_Main() {
/**
* Bei mir sollte eigentlich eh Deutsch eingestellt sein, aber wer weiß
*/
setLocale(Locale.GERMAN);
this.setSize(SIZE);
this.setJMenuBar(new TestLanguage_Menu(this));
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.setLayout(new GridLayout(4,1));
this.add(new JTextField(Messages.getString("TestLanguage_Main.Field1Text")));
this.add(new JTextField(Messages.getString("TestLanguage_Main.Field2Text")));
this.add(new JTextField(Messages.getString("TestLanguage_Main.Field3Text")));
this.add(new JTextField(Messages.getString("TestLanguage_Main.Field4Text")));
this.setVisible(true);
}
public void resetSize(){
this.setSize(SIZE);
}
public static void main(String[] args) {
new TestLanguage_Main();
}
}
das Menü
Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class TestLanguage_Menu extends JMenuBar{
TestLanguage_Main mutter;
JMenu jmFile, jmEdit, jmOptions, jmHelp;
JMenuItem jmtFileOpen, jmtFileClose, jmtFileSave, jmtOptionsReset, jmtOptionsTranslate;
/*
* The Listener for all the MenuItems
*/
private ActionListener al = new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand() == jmtOptionsReset.getActionCommand()){
System.out.println(Messages.getString("TestLanguage_Menu.outResize"));
mutter.resetSize();
} else if(e.getActionCommand() == jmtOptionsTranslate.getActionCommand()){
System.out.println(Messages.getString("TestLanguage_Menu.outTranslate"));
} else if(e.getActionCommand() == jmtFileOpen.getActionCommand()){
System.out.println(Messages.getString("TestLanguage_Menu.outFileOpen"));
}else if(e.getActionCommand() == jmtFileClose.getActionCommand()){
System.out.println(Messages.getString("TestLanguage_Menu.outFileClose"));
} else if(e.getActionCommand() == jmtFileSave.getActionCommand()){
System.out.println(Messages.getString("TestLanguage_Menu.outFileSave"));
} else {
System.out.println(Messages.getString("TestLanguage_Menu.outOtherMenuEvent"));
}
}
};
/*
* Building the Menu in the CONSTRUCTOR
*/
public TestLanguage_Menu(TestLanguage_Main mutter) {
this.mutter = mutter;
add(jmFile = new JMenu(Messages.getString("TestLanguage_Menu.jmFile")));
jmFile.add(jmtFileOpen = new JMenuItem(Messages.getString("TestLanguage_Menu.jmiOpen")));
jmFile.add(jmtFileClose = new JMenuItem(Messages.getString("TestLanguage_Menu.jmiClose")));
jmFile.add(jmtFileSave = new JMenuItem(Messages.getString("TestLanguage_Menu.jmiSave")));
add(jmEdit = new JMenu(Messages.getString("TestLanguage_Menu.jmEdit")));
add(jmOptions = new JMenu(Messages.getString("TestLanguage_Menu.jmOptions")));
jmOptions.add(jmtOptionsReset = new JMenuItem(Messages.getString("TestLanguage_Menu.jmiResetSize")));
jmOptions.add(jmtOptionsTranslate = new JMenuItem(Messages.getString("TestLanguage_Menu.jmiTranslate")));
add(jmHelp = new JMenu(Messages.getString("TestLanguage_Menu.jmHelp")));
addAListenerToAll(this, al);
}
/*
* My Method to connect all items of a JMenuBar to an ActionListener
*/
private void addAListenerToAll(JMenuBar jmb, ActionListener al){
JMenu jm;
for(int i = 0; i< jmb.getMenuCount(); i++){ // für jedes JMenu der JMenubar
jm = jmb.getMenu(i);
for(int x = 0; x < jm.getItemCount(); x++){ // für jedes Item des JMenu
jm.getItem(x).addActionListener(al); // adde Listener
}
}
}
}
Die Klasse Message (automatisch erstellt durch "externalize Strings" von eclipse)
Code:
import java.util.MissingResourceException;
import java.util.ResourceBundle;
public class Messages {
private static final String BUNDLE_NAME = "messages";
private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
.getBundle(BUNDLE_NAME);
private Messages() {
}
public static String getString(String key) {
try {
return RESOURCE_BUNDLE.getString(key);
} catch (MissingResourceException e) {
return ("! " + key + " is missing !");
}
}
}