# Sprache im GUI ändern



## lukasgo (29. Apr 2009)

Hallo,

Ich habe mittlerweile schon herausgefunden wie ich die Sprache im GUI ändern kann. Jetzt hab ich in einem JMenue drei RadioButtons für drei verschiedene Sprachen, ich hab für jeden Button eine ActionPerformed Methode, wie kann ich jetzt bei einem Klick auf die Sprache die Beschriftungen der Buttons und Labels ändern?

mfg
lukasgo


----------



## MiDniGG (29. Apr 2009)

lukasgo hat gesagt.:


> Hallo,
> 
> Ich habe mittlerweile schon herausgefunden wie ich die Sprache im GUI ändern kann. Jetzt hab ich in einem JMenue drei RadioButtons für drei verschiedene Sprachen, ich hab für jeden Button eine ActionPerformed Methode, wie kann ich jetzt bei einem Klick auf die Sprache die Beschriftungen der Buttons und Labels ändern?
> 
> ...



Mal so grob geschätzt. Den RBs nen ActionListener adden. Wenn einer gedrückt wird die Methode zum Sprache wechseln aufrufen...
Weiß aba ned ob es da nen ActionListener gibt...


*EDIT:*

Ja geht:


```
public class RBTest extends JFrame implements ActionListener{
	private static final long serialVersionUID = 1L;
	private JRadioButton rb1 = null;
	public static void main(String[] args) {
		new RBTest();
	}
	public RBTest(){
		JPanel pane = new JPanel();
		rb1 = new JRadioButton("HALLO");
		rb1.addActionListener(this);
		pane.add(rb1, BorderLayout.CENTER);
	}
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == rb1) {
			System.out.println("HI");
		}
	}
}
```

Sehr unschön. Aba was erwartet man nach 2 Minuten ^^


----------



## Verjigorm (29. Apr 2009)

lukasgo hat gesagt.:


> Hallo,
> 
> Ich habe mittlerweile schon herausgefunden wie ich die Sprache im GUI ändern kann. Jetzt hab ich in einem JMenue drei RadioButtons für drei verschiedene Sprachen, ich hab für jeden Button eine ActionPerformed Methode, wie kann ich jetzt bei einem Klick auf die Sprache die Beschriftungen der Buttons und Labels ändern?
> 
> ...




So einfach ist das nicht, du musst das alles schon selbst organisieren
http://www.java-forum.org/java-basics-anfaenger-themen/80920-buttons-um-sprache-zu-aendern.html


----------



## Hadernlump (29. Apr 2009)

Ich würde sowas in etwa so lösen. Vielleicht gibt es aber bessere Lösungsmöglichkeiten dafür die ich nicht kenne.


```
ActionListener listener = new ActionListener()
{
	public void actionPerformed(ActionEvent e)
	{
		Properties prop = new Properties();
		properties.loadFromXML(new File(("data/language/" + (JRadioButton)g.getSource()).getText() + ".properties"));

		button1.setTest(properties.getProperty("Button1"));
		// ...
		label1.setTest(properties.getProperty("Label1"));
		// ...
	}
};

JRadioButton deutsch = new JRadioButton("Deutsch");
deutsch.addActionListener(listener);// Daten stehen in der Datei '/data/language/Deutsch.properties'

JRadioButton englisch = new JRadioButton("Englisch");
englisch.addActionListener(listener);// Daten stehen in der Datei '/data/language/Englisch.properties'
```

PS: Code nicht geprüft und bestimmt fehlerhaft


----------



## Wildcard (29. Apr 2009)

Letztlich ist das fast nur über ein eigenes Observer System zu lösen. Alle Elemente die irgendwie Text darstellen müssen ein Interface implementieren und irgendwo global registriert und benachrichtigt werden.
Letztlich ist das so viel Arbeit, das es in den meisten Fällen sinnvoller ist einen Neustart der Anwendung vorzuschreiben.


----------

