Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何创建执行';不要把焦点放在窗户上_Java_Swing_Focus - Fatal编程技术网

Java 如何创建执行';不要把焦点放在窗户上

Java 如何创建执行';不要把焦点放在窗户上,java,swing,focus,Java,Swing,Focus,我有一个JTextField和FocusListener,每当textfield失去焦点时都调用textfield.grabFocus()。但不幸的是,它允许父窗口对用户操作作出反应。有没有办法不只使用JTextField方法将焦点赋予窗口?如果我理解正确,您不希望程序中的任何其他控件在该字段需要焦点时可用。问题是,每个对象都可能至少有一个事件侦听器在等待某个操作发生,从而将您的注意力从您身上夺走 通过为每个对象设置setFocusable(false),可以使所有对象不可聚焦,但仍允许捕获事件

我有一个JTextField和FocusListener,每当textfield失去焦点时都调用textfield.grabFocus()。但不幸的是,它允许父窗口对用户操作作出反应。有没有办法不只使用JTextField方法将焦点赋予窗口?

如果我理解正确,您不希望程序中的任何其他控件在该字段需要焦点时可用。问题是,每个对象都可能至少有一个事件侦听器在等待某个操作发生,从而将您的注意力从您身上夺走

通过为每个对象设置
setFocusable(false)
,可以使所有对象不可聚焦,但仍允许捕获事件

我会覆盖/替换(或者可能完全删除,如果真的需要)所有其他对象上的事件侦听器,以便仅在满足适当条件时(如果对象不需要焦点,如果可能发生的话)执行操作。如果重写/替换,如果不满足这些条件,则每个侦听器都可以将焦点返回到JTextField


另外,最好使用
requestFocus()
requestFocusInWindow()
而不是
grabFocus()
。有关更多信息,请参阅和

所以,你想让它一旦一个文本字段有了焦点,它就永远不会失去焦点?听起来很邪恶。。。