Halten Sie einen Schlüssel gedrückt, während Sie auf ein JTextfield in Java klicken. Wie bekommt ich den Schlüssel?

StackOverflow https://stackoverflow.com/questions/4574708

Frage

Ich habe ein jTextfield einen Tag in einer Woche, wie "Friday", wenn ich darauf klicke, möchte ich eine Wahl wie "1. des Monat, 3. des Monat oder der letzte Monat" haben, also habe ich mich ausgedacht zwei Optionen :

<1> Halten Sie eine Nummer oder einen Brief gedrückt, sagen wir "2" oder "L" und klicken Sie dann auf "Freitag". das jtextfield?

<2> Rechte Mausklick klicken Sie auf das JTextField "Friday", lassen Sie ein Menü mit Schaltflächen oder Kontrollkästchen fallen, mit denen ich auswählen kann, dann das Menü schließen und den Wert abrufen.

Mein Code sieht bisher so aus:

  private final JTextField[] dayHeadings=new JTextField[]{new JTextField("Su"),
                                                          new JTextField("Mo"),
                                                          new JTextField("Tu"),
                                                          new JTextField("We"),
                                                          new JTextField("Th"),
                                                          new JTextField("Fr"),
                                                          new JTextField("Sa")};
......

    for (int ii=0; ii < dayHeadings.length; ii++)
    {
      dayHeadings[ii].setEditable(false);
      dayHeadings[ii].setFocusable(false);
      dayHeadings[ii].addMouseListener(new MouseAdapter() { public void mouseClicked(final MouseEvent evt) { onHeadingClicked(evt); } });
      add(dayHeadings[ii],new AbsoluteConstraints(x,38,X_Cell_Size+1,Y_Cell_Size+1));
    }
......
  void onHeadingClicked(final java.awt.event.MouseEvent evt)
  {
    final javax.swing.JTextField fld=(javax.swing.JTextField) evt.getSource();

    ...
  }

Wie kann man eines der oben genannten machen, können sie in Java machbar machen?

War es hilfreich?

Lösung

Option 1:

Es gibt keine Möglichkeit, dies in einem Schritt zu tun. Sie müssten eine KeyListner hinzufügen, um zu verfolgen, wenn eine Taste gedrückt wird, und dann den Zeichenwert speichern. Dann müssten Sie dem Hörer einen Mouselistener für mousespressierte Ereignisse hinzufügen. Wenn das mouse -event -Feuer feuert, müssten Sie überprüfen, welcher Charakter gespeichert wird, und dann Ihre Verarbeitung durchführen. Daher würde Ihr Hörer sowohl die KeyListener- als auch die Mouselistener -Schnittstellen implementieren.

Option 2:

Sie müssen einen Maus -Listener hinzufügen und auf ein rechter Mausklick hören und dann ein Popup -Menü anzeigen.

Ich denke, Option 2 ist intuitiver und einfacher. Es ist immer einfacher, mit einer Hand zu arbeiten und dann gezwungen zu werden, zwei Hände zu benutzen.

Andere Tipps

GetModifiers ist eigentlich das, was ich brauchte. Eine Probe für die Modifikatoren kann gefunden werdenhier

Eine andere, lazier -Art, dies zu tun, wäre GetModifiers () auf dem Mouseclick -Event. Es wird angezeigt, welche Modifikatortasten (Strg, Alt, Verschiebung usw.) während des Mausklicks gedrückt wurden. Die Verwendung dieser Schaltflächen ist meiner Meinung nach nicht so intuitiv wie ein Dropdown -Menü oder Zahlen, könnte aber funktionieren.

Lesen Sie hier mehr

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top