你如何模拟JTextField上的点击? 相当于JButton doClick()?

我正在开发一个Java项目,需要让一个按键模拟点击JTextField。 我正在寻找的是相当于JButton doClick()方法。

我试图让按键“enter”执行与单击JTextField完全相同的function。

不确定要提供的其他信息。 提前致谢。

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时程序运行正常,但是当按下回车时我不知道如何调用刚输入的JTextField所以我想模拟点击JTextField(它需要焦点)。 我想我应该刚刚解释了我的整个问题。

谢谢。

如果你想通过鼠标和按键同时发生同样的事情,那么拥有一个被两者调用的方法会不会更有意义? 也就是说,你有一个像fieldClicked这样的方法,它可以被MouseListenerKeyListener调用。 这将更容易调试 – 减少事件的混乱,这可能非常混乱 – 并且可能更具可读性。

我想要的是当用户按下回车键时,它会调用与点击框架中任何位置时相同的代码

对我来说仍然没有意义。

当用户点击框架上的任何位置时,会发生以下几种情况:

a)文本字段失去焦点

b)其他一些组件获得重点

您可以在文本字段中添加ActionListener。 按下Enter键时调用ActionListener。 但那么如何猜测框架上的哪个位置会产生鼠标点击? 对我来说似乎是随机逻辑。