Java 如何创建执行';不要把焦点放在窗户上
我有一个JTextField和FocusListener,每当textfield失去焦点时都调用textfield.grabFocus()。但不幸的是,它允许父窗口对用户操作作出反应。有没有办法不只使用JTextField方法将焦点赋予窗口?如果我理解正确,您不希望程序中的任何其他控件在该字段需要焦点时可用。问题是,每个对象都可能至少有一个事件侦听器在等待某个操作发生,从而将您的注意力从您身上夺走 通过为每个对象设置Java 如何创建执行';不要把焦点放在窗户上,java,swing,focus,Java,Swing,Focus,我有一个JTextField和FocusListener,每当textfield失去焦点时都调用textfield.grabFocus()。但不幸的是,它允许父窗口对用户操作作出反应。有没有办法不只使用JTextField方法将焦点赋予窗口?如果我理解正确,您不希望程序中的任何其他控件在该字段需要焦点时可用。问题是,每个对象都可能至少有一个事件侦听器在等待某个操作发生,从而将您的注意力从您身上夺走 通过为每个对象设置setFocusable(false),可以使所有对象不可聚焦,但仍允许捕获事件
setFocusable(false)
,可以使所有对象不可聚焦,但仍允许捕获事件
我会覆盖/替换(或者可能完全删除,如果真的需要)所有其他对象上的事件侦听器,以便仅在满足适当条件时(如果对象不需要焦点,如果可能发生的话)执行操作。如果重写/替换,如果不满足这些条件,则每个侦听器都可以将焦点返回到JTextField
另外,最好使用
requestFocus()
或requestFocusInWindow()
而不是grabFocus()
。有关更多信息,请参阅和 所以,你想让它一旦一个文本字段有了焦点,它就永远不会失去焦点?听起来很邪恶。。。