java - 如何在其他弹出窗口上显示弹出窗口?

标签 java user-interface swing popup jdialog

在我的应用程序中,我在某个屏幕上启动了一个弹出窗口。取决于用户将单击此弹出窗口的哪个按钮,必须启动另一个弹出窗口。我使用 JDialog 对象来实现这些弹出窗口。问题是第二个弹出窗口没有显示(即使使用 setVisible(true) 和 toFront())。它已创建,但我看不到它。我在其构造函数中将第一个弹出窗口定义为其所有者。任何人都可以帮忙吗?

最佳答案

当从父窗口或对话框打开 JDialog 并将其设置为模态时,父窗口的事件调度线程将停止。这可以防止父级被聚焦或传递其他事件,或者在模态对话框关闭之前基本上做任何事情。因此调用阻塞

您必须做的是从其他地方触发您的事件,例如新对话框而不是父窗口,或者不使用模态对话框,而是使用常规 JFrame 并将其设置为始终在顶部使用 setAlwaysOnTop(true)。这意味着用户可以继续使用父窗口,事件仍会从中触发。

附录:针对您的问题“程序专注于显示它而不对必须隐藏它的事件使用react”:当您制作对话框模态时,一旦您使其可见,它就会阻塞父窗口直到它关闭,包括事件触发。如果您需要以编程方式关闭新的弹出窗口,则需要使弹出窗口成为非模态的,或者您需要在新的弹出窗口的上下文中执行后续代码(例如在它变得可见时触发事件)

关于java - 如何在其他弹出窗口上显示弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5395340/

相关文章:

java - 尝试为 JPA 表添加新值时出错

java - Jsoup:获取div内的文本

java - 点击播放按钮,应用程序已停止,重新打开

类似于Android的Java桌面开发框架?

java Netbeans IDE - 覆盖图像(棋盘-棋子)

java - 允许用户在图像上手写标记 - Java、Swing

java - 如果对象(或任何函数结果)为 null,则调用函数应返回默认值

java - 如何制作类似于Blackberry App World 的黑莓屏幕幻灯片动画?

javascript - React 中带有延迟子菜单 View 的菜单

Java - JLabel和垂直框之间的距离