如何使JDialog最顶级但不是模态?

时间:2012-06-25 14:58:41

标签: java applet jdialog

我正在创建一个applet。该applet必须从数据库中获取一些大块数据并且操作很慢...这就是为什么我想创建一个“加载”JDialog,它将显示在applet的顶部,而applet正在从DB,但它不应阻止用户输入applet 怎么做?如果我创建一个“setAlwaysOnTop(true)”的JDialog,它将不会显示在顶部。如果我将它设置为模态,它将显示但不允许我的applet与DB通信。我甚至试图让“加载”窗口可以运行并从另一个线程运行它,没有运气。

如何为applet制作适当的,通用的“加载”JDialog,它不会是模态的,但会始终保持最佳状态?

1 个答案:

答案 0 :(得分:2)

调用swing / awt通常是一个非常(而且我非常非常非常)的坏主意  来自非EDT线程。难怪,applet JFrame / JDialog在OSX和Windows中的工作方式存在诸多问题。如果您的applet直接在applet UI中使用了JProgressBarr或其他内容,它可以提供更好的用户体验。如果您必须弹出一个窗口,请将JFrame与AlwaysOnTop=true一起使用。您获得奇怪行为的原因是您可能不使用构造函数来获取父组件或只是传入null值。