Java AWT Window 管理、用户输入和焦点?

Java AWT Window management, user input, and focus?

我正在尝试寻找与 window 管理相关的错误的来源,可能特别是 awt。但是,我对一般的 window 管理或 awt 几乎不熟悉,所以我什至确定我在搜索什么。我希望获得一些关于术语或其他方面的一般性指导,这可能有助于指导我朝着正确的方向前进。

在我正在开发的程序中,用户可以打开可以与之交互的windows(即它们有文本输入框、下拉菜单等)和不能交互的windows交互(即他们只显示对话框)。当用户打开一个“non-interactive”window时,用户仍然可以使用底层程序。但是,当打开“交互式”window 时,在 window 关闭之前,用户将无法使用底层程序。此外,“交互式”windows 似乎将自己堆叠在“non-interactive”windows 之上。也就是说,如果我打开一个“non-interactive”window然后再打开一个“interactive”window之后,“interactive”window会把自己放在上面"non-interactive" window 并且不允许用户使用任何标题栏小部件。在此程序中,这种行为并不总是可取的。

我认为这与聚焦有关,但我通读了 this 文档,运气不佳(这可能是因为我不知道自己在寻找什么)。特别是,我注意到提到了“VetoableChangeLister”,它似乎没有出现在我正在使用的代码中的任何地方,以及方法“requestFocusInWindow”,它确实出现在我正在使用的代码中但没有出现在我能看到的与我上述问题描述相关的任何方式。

上述问题是否与window对焦有关?或者我在这里咆哮错误的树?如果没有别的,即使是一些基本术语,这样我至少可以 Google 智能搜索。

我问的问题与 windows 的“形式”有关,并在评论中得到了回答。 link 提供的解释方式是 https://docs.oracle.com/javase/tutorial/uiswing/misc/modality.html