【问题标题】:Can Java display a dialog without changing the active window?Java 可以在不更改活动窗口的情况下显示对话框吗?
【发布时间】:2013-06-15 07:08:23
【问题描述】:

我想在Frame 上方显示一个模式(进度)对话框,即使Frame 不是活动窗口。但是,显示一个对话框会导致它或它的所有者成为活动窗口。有没有办法在对话框或其所有者不成为活动窗口的情况下显示对话框——特别是在 Windows 平台上?

我想这样做的原因是:我的Frame 定期刷新自身并在刷新时显示其模态进度对话框。现在我的应用程序只在它是活动窗口时刷新。

SSCCE,因为人们要求它:

Frame frame = new JFrame();
frame.setVisible( true );
// 30 seconds later (using a Timer/TimerTask)
Dialog dialog = new JDialog( frame, ModalityType.DOCUMENT_MODAL );
dialog.setVisible( true );

【问题讨论】:

    标签: java swing window


    【解决方案1】:

    我认为你不能用模态对话框来做到这一点。

    但是,以下方法适用于非模态对话框:

    dialog.setFocusableWindowState( false );
    dialog.setVisible(true);
    dialog.setFocusableWindowState( true );
    

    当对话框显示时它没有焦点,但是如果你点击它,它就会获得焦点。您可以在模态对话框中尝试此操作,看看会发生什么。

    【讨论】:

    • 前两行也适用于模式对话框(至少在 Vista 上)。我还没有尝试过其他排列,但这已经足够了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多