Java 如何模拟点击JTextField?与JButton doClick()等效?
我正在从事一个Java项目,需要一个按键来模拟对JTextField的点击。我要寻找的是JButton doClick()方法的等价物 我试图让按键“enter”执行与单击JTextField完全相同的功能 不确定要提供什么其他信息。提前谢谢Java 如何模拟点击JTextField?与JButton doClick()等效?,java,awt,jbutton,jtextfield,awtrobot,Java,Awt,Jbutton,Jtextfield,Awtrobot,我正在从事一个Java项目,需要一个按键来模拟对JTextField的点击。我要寻找的是JButton doClick()方法的等价物 我试图让按键“enter”执行与单击JTextField完全相同的功能 不确定要提供什么其他信息。提前谢谢 public void simulateKey(KeyEvent e, Component c) { Field f = KeyEvent.class.getField("focusManagerIsDispatching"); f.setAc
public void simulateKey(KeyEvent e, Component c) {
Field f = KeyEvent.class.getField("focusManagerIsDispatching");
f.setAccessible(true);
f.set(e, Boolean.TRUE);
c.dispatchEvent(e);
}
将“回车”发送到JTextField。这是从你家偷来的
将“回车”发送到JTextField。这是从你家偷来的
我想要的是当用户按下
输入时,它调用与输入时相同的代码
它们单击帧中的任意位置
我还是不明白
当用户单击框架上的任何位置时,会发生两种情况:
a) 文本字段失去焦点
b) 其他一些组成部分获得关注
您可以向文本字段添加ActionListener。按下Enter键时将调用ActionListener。但是,如何猜测在框架上的何处生成鼠标单击?对我来说似乎是随机的逻辑
我想要的是当用户按下
输入时,它调用与输入时相同的代码
它们单击帧中的任意位置
我还是不明白
当用户单击框架上的任何位置时,会发生两种情况:
a) 文本字段失去焦点
b) 其他一些组成部分获得关注
您可以向文本字段添加ActionListener。按下Enter键时将调用ActionListener。但是,如何猜测在框架上的何处生成鼠标单击?对我来说,这似乎是随机逻辑。如果您希望鼠标和按键同时发生同样的事情,那么让两者都调用一个方法不是更有意义吗?也就是说,您有一个类似于
fieldClicked
的方法,它被MouseListener
和keysistener
调用。这将更容易调试——更少地处理事件,这可能会非常混乱——并且可能更容易阅读。如果您希望鼠标和按键同时发生同样的事情,那么让两者都调用一个方法不是更有意义吗?也就是说,您有一个类似于fieldClicked
的方法,它被MouseListener
和keysistener
调用。这将更容易调试——更少地处理事件,这可能会非常混乱——并且可能更可读。好的,谢谢您的帮助。我想我不太清楚,但我现在发现了一种方法,可以让我的代码工作,这要感谢你的一些想法
我已经考虑过创建一个由两个函数调用的私有方法,但是部分代码需要知道用户点击了哪个JTextField。我发现了.getFocusOwner(),它允许我使用焦点(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);
}
}
也许有更好的方法可以做到这一点,但基本上我有一个JTextField数组,当用户单击下一个JTextField时程序运行正常,但当按enter键时,我不知道如何调用刚刚输入的JTextField,所以我想模拟单击JTextField(这需要焦点)。我想我应该解释一下我的整个问题
谢谢。好的,谢谢你的帮助。我想我不太清楚,但我现在发现了一种方法,可以让我的代码工作,这要感谢你的一些想法 我已经考虑过创建一个由两个函数调用的私有方法,但是部分代码需要知道用户点击了哪个JTextField。我发现了.getFocusOwner(),它允许我使用焦点(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);
}
}
也许有更好的方法可以做到这一点,但基本上我有一个JTextField数组,当用户单击下一个JTextField时程序运行正常,但当按enter键时,我不知道如何调用刚刚输入的JTextField,所以我想模拟单击JTextField(这需要焦点)。我想我应该解释一下我的整个问题
谢谢。我需要一个按键来模拟鼠标点击,而不仅仅是模拟按键。我想让按键调用鼠标点击的功能。这不适用于单元测试。我想要的是,当用户按enter键时,它调用的代码与他们单击帧中任何位置时调用的代码相同。我需要一个按键来模拟鼠标点击,而不仅仅是模拟按键。我想让按键调用鼠标点击的功能。这不适用于单元测试。我想要的是,当用户按enter键时,它调用的代码与他们单击帧中任何位置时调用的代码相同。当您单击插入符号定位到您单击的字符的文本字段时。因此,让“回车”做完全相同的事情没有任何意义,因为我们不知道你想假装点击哪个字符。因为你无法描述你的需求,所以在一个SSCCE:显示当前发生的事情。当你点击一个文本字段时,插入符号定位到你点击的字符。所以输入“执行完全相同的操作”没有任何意义,因为我们不知道您想要假装单击了哪个角色。因为你不能描述你的需求,所以在一个SSCCE上:显示当前正在发生的事情。