在我的应用程序中,我在某个屏幕上启动了一个弹出窗口。取决于用户将单击此弹出窗口的哪个按钮,必须启动另一个弹出窗口。我使用 JDialog 对象来实现这些弹出窗口。问题是第二个弹出窗口没有显示(即使使用 setVisible(true) 和 toFront())。它已创建,但我看不到它。我在其构造函数中将第一个弹出窗口定义为其所有者。任何人都可以帮忙吗?
最佳答案
当从父窗口或对话框打开 JDialog
并将其设置为模态时,父窗口的事件调度线程将停止。这可以防止父级被聚焦或传递其他事件,或者在模态对话框关闭之前基本上做任何事情。因此调用阻塞。
您必须做的是从其他地方触发您的事件,例如新对话框而不是父窗口,或者不使用模态对话框,而是使用常规 JFrame
并将其设置为始终在顶部使用 setAlwaysOnTop(true)
。这意味着用户可以继续使用父窗口,事件仍会从中触发。
附录:针对您的问题“程序专注于显示它而不对必须隐藏它的事件使用react”:当您制作对话框模态时,一旦您使其可见,它就会阻塞父窗口直到它关闭,包括事件触发。如果您需要以编程方式关闭新的弹出窗口,则需要使弹出窗口成为非模态的,或者您需要在新的弹出窗口的上下文中执行后续代码(例如在它变得可见时触发事件)
关于java - 如何在其他弹出窗口上显示弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5395340/