簡體   English   中英

您如何模擬對JTextField的單擊? 等價於JButton doClick()?

[英]How do you simulate a click on a JTextField? Equivalent of JButton doClick()?

我正在研究Java項目,需要按鍵來模擬對JTextField的單擊。 我正在尋找的是JButton doClick()方法的等效項。

我試圖讓按鍵“輸入”執行與單擊JTextField完全相同的功能。

不知道要提供什么其他信息。 提前致謝。

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

發送“ Enter”到您的JTextField。 這是從這里來的

好的,謝謝您的幫助。 我想我不清楚,但是由於您的一些想法,我現在已經找到了一種使我的代碼正常工作的方法。

我已經考慮過只創建兩個函數都調用的私有方法,但是部分代碼需要知道用戶單擊了哪個JTextField。 我發現了.getFocusOwner(),它使我可以使用Focus(JTextField)來引用當前項。 像這樣

    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);
        }
    }

可能有更好的方法,但是基本上我有一個JTextFields數組,當用戶單擊下一個JTextField時,程序運行正常,但是按Enter時,我不知道如何調用剛輸入的JTextField。所以我想模擬對JTextField的單擊(這需要焦點)。 我想我應該已經解釋了我的整個問題。

謝謝。

如果您希望由於鼠標和按鍵同時發生相同的事情,那么讓兩者都調用一個方法更有意義嗎? 也就是說,您有一個類似fieldClicked的方法,該方法同時被MouseListenerKeyListener調用。 這將更易於調試-減少事件的混亂,這可能非常令人困惑-並且可能更具可讀性。

我想要的是用戶按下Enter鍵時,它會調用與單擊框架中任意位置時相同的代碼

對我來說仍然沒有意義。

當用戶單擊框架上的任何位置時,會發生一些事情:

a)文本字段失去焦點

b)其他一些重點

您可以將ActionListener添加到文本字段。 當按下Enter鍵時,將調用ActionListener。 但是,如何猜測框架上的哪個位置會產生鼠標單擊呢? 在我看來就像是隨機邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM