Frage

Ich arbeite an einem Java -Projekt und muss einen Schlüsselpress auf ein JTextField simulieren. Was ich suche, ist das Äquivalent der Methode Jbutton Doclick ().

Ich versuche, die Tastendrückung "Enter" genau dieselbe Funktion wie einen Klick auf das JTextField auszuführen.

Ich bin mir nicht sicher, welche anderen Informationen zur Verfügung gestellt werden sollen. Danke im Voraus.

War es hilfreich?

Lösung 2

OK, danke für die Hilfe. Ich glaube, ich war mir nicht klar, aber ich habe jetzt einen Weg entdeckt, meinen Code dank einiger Ihrer Ideen funktionieren zu lassen.

Ich hatte bereits darüber nachgedacht, nur eine private Methode zu erstellen, die von beiden Funktionen genannt wurde, aber ein Teil des Codes muss wissen, auf welches JTextField der Benutzer geklickt wird. Ich habe .GetFocusOwner () entdeckt, das es mir ermöglicht, das aktuelle Element mit Focus (JTextField) zu verweisen. Etwas wie das

    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode()==KeyEvent.VK_ENTER) {
            Object which = JFrame.getFocusOwner();                
            if(which.getClass() == JTextField.class)
                foo(which);
         }
    }

    public void mouseClicked(MouseEvent e) {                
        Object which = e.getSource();
        if(which.getClass()== JTextField.class) {
            foo(which);
        }
    }

Es gab wahrscheinlich einen besseren Weg, dies zu tun, aber im Grunde hatte ich eine Reihe von jTextfields und das Programm funktionierte ordnungsgemäß, als Benutzer auf das nächste JTextField klickten Deshalb wollte ich einen Klick auf das JTextField simulieren (was Fokus erfordert). Ich denke, ich hätte gerade mein ganzes Problem erklären sollen.

Vielen Dank.

Andere Tipps

public void simulateKey(KeyEvent e, Component c) {
   Field f = KeyEvent.class.getField("focusManagerIsDispatching");
   f.setAccessible(true);
   f.set(e, Boolean.TRUE);
   c.dispatchEvent(e);
}

Senden Sie "Eingeben" an Ihr JTextField. Dies wurde gestohlen hier.

Wenn Sie möchten, dass das Gleiche aufgrund der Maus und eines Tastendrucks passieren würde, wäre es nicht sinnvoller, eine von beiden genannte Methode zu haben? Das heißt, Sie haben eine Methode wie fieldClicked was beides von der aufgerufen wird MouseListener und von der KeyListener. Dies wäre einfacher zu debuggen-ohne Ereignisse, was sehr verwirrend sein kann-und wahrscheinlich lesbarer.

Ich möchte, wenn der Benutzer die Eingabetaste drückt. Er ruft denselben Code auf, wie er im Rahmen irgendwohin klickt

Macht für mich immer noch keinen Sinn.

Wenn der Benutzer auf einen Ort klickt, an dem ein paar Dinge passieren, passieren einige Dinge:

a) Das Textfeld verliert den Fokus

b) Einige andere Komponenten gewinnen Fokus

Sie können dem Textfeld einen ActionListener hinzufügen. Der ActionListener wird aufgerufen, wenn die Eingabetaste gedrückt wird. Aber wie Sie dann erraten, wo im Rahmen ein Mausklick generiert wird? Scheint mir eine zufällige Logik zu sein.

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