Suche einen KeyEvent für die Taste "ä"

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi allerseits!

Ich wollte gerne eine JMenuBar erstellen, mit einem JMenuItem:

JMenuItem aelteste = new JMenuItem("Älteste", KeyEvent.VK_A);
aelteste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.SHIFT_MASK));
auswahl.add(aelteste);

Statt dem "KeyEvent.VK_A" hätte ich gerne die Taste "ä", damit im der JMenuBar alles schön automatisch erstellt, der Mnemonic unterstrichen und der Accelerator angehängt wird. Was muss ich jetzt genau machen, damit das so funktioniert? Denn die Taste "ä" gibt es ja auf einer amerikanischen Tastatur nicht und deshalb auch keinen dementsprechenden KeyEvent, oder doch?

Mit einem kleinen Java-Progrämmchen habe ich noch herausgefunden, dass die Taste "ä" als undefiniert gilt.

P.S.: weitere kleine Frage: wie kann ich einen Accelerator setzen, der nur auf eine Taste, z.B. nur auf die Taste "F1" reagiert? (also ohne SHIFT, CTRL oder ALT)

Danke schonmal für eure Antworten!

deepbeat
 
such den char wert für ä raus und frage nach dem ab.

mach zb nen keylistener und drücke die taste und lass den char wert mittels system.out.println ausgeben
 
Wenn du so meinst:

import java.awt.*;
import java.awt.event.*;

public class KeycodeFinder extends Frame implements KeyListener {

public KeycodeFinder() {
super("KeycodeFinder");
setSize(200, 200);
this.addKeyListener(this);
addWindowListener(new FensterEvents());
show();
}

public static void main(String[] args) {
new KeycodeFinder();
}

public void keyPressed(KeyEvent e) {
setTitle(e.getKeyCode() + "");
}

public void keyReleased(KeyEvent e) {
setTitle(e.getKeyCode() + "");
}

public void keyTyped(KeyEvent e) {
setTitle(e.getKeyCode() + "");
}

static class FensterEvents extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
}

dann kommt 0, also undefiniert raus. Aber das bringt mir dann ja wenig, oder?
Oder meintest du was anderes?

deepbeat
 
Also ein bißchen weitergekommen bin ich jetzt:

JMenuItem aelteste = new JMenuItem("Älteste");
aelteste.setMnemonic('ä');
aelteste.setAccelerator(KeyStroke.getKeyStroke('Ä'));

Alles funktioniert dadurch so wie ich es will (also reagiert auf die Tasten Umschalt+Ä), nur leider steht als Shortcut/Accelerator in der Menüleiste hinter "Älteste" nur "Ä" und nicht wie gewünscht "Umschalt+Ä". Ich habe sämtliche Keystroke-Methoden ausprobiert, keine brachte mir das gewünschte Ergebnis (richtige Funktion und richtiger Text). Auch nicht:

aelteste.setAccelerator(KeyStroke.getKeyStroke('ä', ActionEvent.SHIFT_MASK));

oder

aelteste.setAccelerator(KeyStroke.getKeyStroke("shift ä"));

Ich habe wirklich alles ausprobiert! Leider finde ich auch keine Methode um den Text hinter dem Menüpunkt "Älteste" zu setzen oder zu verändern!

Kann mir jemand von euch helfen? Ich weiß echt nicht mehr weiter! Bin für jeden Tipp oder vollständige Lösung dankbar ;-) !

Gibt's vielleicht ne Möglichkeit über nicht nur über's JMenuItem sondern über's JMenu oder die JMenuBar? Außerdem müsste das doch auch möglich sein mit CTRL oder ALT statt UMSCHALT, da bekomme ich aber erstrecht nichts hin.

deepbeat
 
Geht folgendes denn nicht?

Code:
public void keyTyped(KeyEvent e)
{
    if (e.getKeyChar == 'ä')
    {
        // Anweisungen
    }
}


Welche Taste gedrückt wurde (Alt, Strg, Shift, usw.), kann man herausfinden mit
isAltDown, isAltGraphDown, isControlDown, isMetaDown, isShiftDown
Beispiel:

Code:
public void keyTyped(KeyEvent e)
{
    if (e.isAltDown && e.getKeyChar == 'ä')
    {
        // Anweisungen
    }
}


Ich habe meine Beispiele jetzt nicht getestet, aber irgendwie so müsste das gehen.
 
Das was du mir geschrieben hast Stefan1200 wusste ich auch schon.

Das Problem ist nur, wie gesagt, dass es keinen Keystroke für die Tastenkombinationen Alt+Ä oder Umschalt+Ä oder Ctrl+Ä gibt. Und dadurch kann der Accelerator/Shortcut für die Menüleiste nicht angezeigt werden. Da steht dann z.B. "Umschalt+Undefinied 0xffff" oder so. Und auf die Tastenkombination reagiert er dann auch nicht. Ich konnte aber einen Keystroke für groß Ä (= Umschalt+Ä) erstellen. Der reagiert dann auch auf den Shortcut/Accelerator, nur wird im Menü dann als Shortcut/Accelerator nur "Ä" und nicht wie gewünscht "Umschalt+Ä" angezeigt.

Ich glaube aber mittlerweile, dass es für mein Problem gar keine Lösung gibt! Denn man sollte ja ein Programm nicht nur mit einer deutschen Tastatur bedienen können, sondern mit fast allen, weshalb es so einen Keystroke wahrscheinlich nicht gibt.

Danke trotzdem für eure Bemühungen!

deepbeat
 
hi!

eine frage!
ich gebe im Hauptprogramm folgendes mit
Code:
JMenuHelper.addMenuItem(menuBearbeiten, "Ausschnei_den", '1',actionProcCmd);
public static JMenuItem addMenuItem(JMenu m, String s, char keyChar,ActionListener al)

wegen dem char keyChar kann ich jetzt nur ein zeichen mitgeben!

was muss ich machen damit auch F1 funktioniert?

lg
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben