# KeyStroke und Locale



## Ravendark (17. Apr 2010)

Wenn ich einem MenuItem einen Tastenkürzel mit

```
KeyStroke.getKeyStroke('C', InputEvent.CTRL_DOWN_MASK);
```
zuweise, bekomme ich Strg+C. Da mein Programm mehrere Sprachen unterstützt, soll nun bei der Einstellung Englisch auch das
Tastenkürzel zu Ctrl+C geändert werden.
Habe es bisher mit

```
JFrame.setLocale(Locale.ENGLISH);
JMenuItem.setLocale(Locale.ENGLISH);
Locale.setDefault(Locale.ENGLISH);
```
probiert, allerdings bleibt es bei Strg+C.

Kann mir jemand helfen?


----------



## SlaterB (18. Apr 2010)

ist Strg+C nicht genau gleich Ctrl+C?
oder geht um irgendeinen angezeigten Text in der GUI?


----------



## Ravendark (18. Apr 2010)

SlaterB hat gesagt.:


> oder geht um irgendeinen angezeigten Text in der GUI?


Genau darum geht es. Wenn im Programm auf Englisch umgestellt wird, soll der angezeigte Shortcut-String von Strg+C auf Ctrl+C wechseln.


----------



## SlaterB (18. Apr 2010)

um welchen Text geht es, Screenshot, Testprogramm?
ich weiß aber potentiell wenig dazu


----------



## Ravendark (18. Apr 2010)

```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Test extends JFrame implements ActionListener {
	private JMenuItem item;
	
	public Test() {
		super("");
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		
		item = new JMenuItem("Item");
		item.setAccelerator(KeyStroke.getKeyStroke('C', InputEvent.CTRL_DOWN_MASK));
		item.addActionListener(this);
		
		JMenu title = new JMenu("Title");
		title.add(item);
		
		JMenuBar menuBar = new JMenuBar();
		menuBar.add(title);
		setJMenuBar(menuBar);
		
		setSize(100, 75);
		setLocationRelativeTo(null);
	}
	
	@Override
	public void actionPerformed(ActionEvent event) {
		if(event.getSource() == item) {
			System.out.println("Event");
		}
	}
	
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				new Test().setVisible(true);
			}
		});
	}
}
```
Der Shortcut-Text vom MenuItem ist Strg+C, ich möchte allerdings wenn der Nutzer die Sprache ändert, sich der Shortcut-Text zu Ctrl+C ändert.


----------



## SlaterB (19. Apr 2010)

ich habe das hier gefunden
Bug ID: 6292739 Locale change at runtime doesn't affect text displayed for accelerator keys

mit dem Code unten erscheint bei mir Crtl-C bei
 Locale.setDefault(Locale.ENGLISH);
im Konstruktor, ob das dann zur Laufzeit beim Umschalten klappt usw. kannst du ja ausprobieren,


----------



## Gast2 (19. Apr 2010)

Dann musst du bevor du das L&F setzt die Locale ändern: 
	
	
	
	





```
Locale.setDefault(Locale.ENGLISH);
```
. Danach musst du deine ganze GUI neu aufbauen!!!


----------



## Ravendark (19. Apr 2010)

Recht herzlichen Dank, mal schauen wie ich es anstelle...vielleicht doch erst nach einem Neustart die Sprache ändern wenns zur Laufzeit nicht wirklich klappt.


----------

