Kay: Fragen zu Java-Objekten (Swing)

Hallo,

ich hätte folgende Fragen zu Swing-Objekten in Java:

1. zu JButton:
Gibt es eine Eigenschaft, um einen JButton als Default- zb.w als Cancel-Schaltfläche zu setzen?
Ich habe mir nämlich einen Dialog gebastelt, der neben verschiedenen Eingabefeldern auch einen OK- und einen Abbrechen-Button enthält. Nun soll man aber nicht nur durch Klicken der jeweiligen Schaltfläche den Dialog schließen können, sondern auch durch Drücken der ENTER-Taste bzw. der CANCEL-Taste an jeder beliebigen Stelle im Dialog.
Bis jetzt verwende ich einen KeyListener, den ich jedem Eingabefeld hinzugefügt habe und in dessen KeyPressed-Methode ich dann die gedrückte Taste abfrage. Ich finde das allerdings recht unpraktisch und würde diese Möglichkeit nur verwenden, wenn es keine Alternative (z.B. eine JButton-Eigenschaft) gibt.

2. zu JMenuItem:
Ich habe einen Menüeintrag zum Bearbeiten erstellt und möchte diesem Eintrag die Tastenkombination F2 zuweisen. Der Eintrag wird auch ordnungsgemäß erstellt und beim Klicken wird die entsprechende Aktion ausgelöst. Leider lässt sich die Tastenkombination F2 nicht verwenden. Habe ich einen Fehler bei der Erstellung gemacht?

mnuBearbeiten = new JMenuItem("Bearbeiten");
mnuBearbeiten.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0));
mnuBearbeiten.setMnemonic(KeyEvent.VK_B);

Vielen Dank und viele Grüße,
Kay

  1. Hallo,

    1. zu JButton:
      Gibt es eine Eigenschaft, um einen JButton als Default- zb.w als Cancel-Schaltfläche zu setzen?

    Erteres ja, zweiteres meines Wissens nach nicht.

    Der Default-Button kann über die Methode JRootPane.setDefaultButton(JButton)
    festgelegt werden. Für einen Cancel-Button steht meines Wissens nach
    eine solche Möglichkeit nicht zur Verfügung.

    Du kannst aber einen KeyListener für den aktuellen JDialog registrieren,
    der global auf Escape hört und dann einen Klick auf den Cancel-Button
    simuliert, ähnlich wie dort:
    http://forum.java.sun.com/thread.jspa?threadID=743147&messageID=4276369

    1. zu JMenuItem:

    Dazu kann ich nichts sagen, weil ich keine Erfahrung damit habe. Dein
    Code sieht auf den ersten Blick aber soweit in Ordnung aus. Auch unter
    Beachtung der API. Hast du mal eine andere Taste probiert, vielleicht
    sogar mit Modifier?

    Gruß
    Slyh

    1. Hallo,

      vielen Dank für deine schnelle Antwort!

      Ja, ich hab's schon mit einer anderen Tastenkombi versucht - mit z.B. F5 funktioniert's problemlos. Ich habe F2 auch nicht anders vergeben, nur für diesen einen Menüpunkt - es kann sich also eigentlich auch nichts überlagern. Sehr komisch.

      Naja, trotzdem danke!

      Viele Grüße,
      kay