2011-01-01 8 views
1

Ich habe ein JTextField repräsentiert einen Tag in einer Woche, wie "Freitag", wenn ich darauf klicke, möchte ich eine Auswahl wie "1. des Monats, 3. des Monats oder letzter des Monats" haben, also kam ich mit zwei Optionen:Halten Sie eine Taste gedrückt, während Sie auf ein JTextField in Java klicken, wie bekommt man den Schlüssel?

< 1> Halten Sie eine Zahl oder einen Buchstaben, sagen wir "2" oder "L", dann klicken Sie auf "Freitag" bedeutet 2. (oder letzten) Freitag des Monats, in diesem Fall Wie bekomme ich die Nummer, während ich mit der Maus auf das JTextField klicke?

< 2> Klicken Sie mit der rechten Maustaste auf das "Freitag" JTextField, wählen Sie ein Menü aus, mit entweder Schaltflächen oder Kontrollkästchen, die ich wählen kann, dann schließen Sie das Menü und erhalten Sie den Wert.

wie Mein Code aussieht bisher:

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 eine der oben genannten zu tun, sie sind machbar in Java?

+0

Nur ein wählerischer Kommentar zur Grammatik. Bitte verwenden Sie "möglich", nicht "machbar". Und zumindest "do-fähig" verwenden. Tut mir leid, dass ich so wählerisch bin. ;) – HyperNeutrino

Antwort

1

Option 1:

Es gibt keine Möglichkeit, dies in einem Schritt zu tun. Sie müssen einen KeyListner hinzufügen, um zu verfolgen, wann immer eine Taste gedrückt wird, und dann den Zeichenwert speichern. Dann müssten Sie MouseListener für mousePressed-Ereignisse hinzufügen. Wenn das mousePressed-Ereignis ausgelöst wird, müssen Sie prüfen, welches Zeichen gespeichert ist, und dann Ihre Verarbeitung durchführen. Daher würde Ihr Listener sowohl die KeyListener- als auch die MouseListener-Schnittstelle implementieren.

Option 2:

Sie benötigen einen Maus-Listener und hören Sie auf die rechte Maustaste an, dann ein Popup-Menü angezeigt werden soll.

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

+0

Ja, danke. Ich habe hier einen Beispielcode gefunden: http://www.roseindia.net/java/example/java/swing/PopUpMenu.shtml – Frank

0

Ein anderer, faulerer Weg wäre getModifiers() beim Mausklick-Event. Es zeigt an, welche Modifikatortasten (Strg, Alt, Shift, usw.), wenn überhaupt, während des Mausklicks gedrückt wurden. Die Verwendung dieser Tasten ist meiner Meinung nach nicht so intuitiv wie ein Dropdown-Menü oder Zahlen, könnte aber funktionieren.

Read more here

1

getModifiers ist eigentlich das, was ich brauchte. Ein Beispiel für die Modifikatoren finden Sie here

Verwandte Themen