簡體   English   中英

關閉JOptionPane后如何防止JFrame到達頂部?

[英]How to prevent JFrame from coming to top after closing JOptionPane?

我正在使Web瀏覽器上的某些操作自動化。 完成許多操作后,將彈出一個JOptionPane以詢問用戶是否要繼續。

單擊“是”后,我的主框架將在我的Web瀏覽器上彈出,這破壞了我的工作流程。

我可以使瀏覽器移至主機架的前面,但是我想知道是否有可能在JOptionPane對話框中選擇一個選項后阻止主機架彈出?

我在JOptionPane上找不到任何選項,所以我開始研究使用另一個JFrame重新實現它有多么容易。 我決定禁用主機並稍后再啟用它(看來這是JOptionPane在內部所做的事情),在我重新實現JOptionPane之前,我注意到它可以解決問題:

public static void main(String[] args) {
    final JFrame frame = new JFrame();

    JButton button = new JButton("hello");
    button.addActionListener(e -> {
        frame.setEnabled(false); // disable main frame
        JOptionPane.showMessageDialog(frame, "hello");
        frame.setEnabled(true); // enable main frame
    });
    frame.setContentPane(button);

    frame.setVisible(true);
    frame.setSize(600, 480);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
}

但是,我不確定這是否適用於所有平台。 有幫助嗎?

如果沒有,我建議替換JOptionPane.showMessageDialog(frame, "hello"); 使用您自己的JFrame因此您可以完全控制它。 您必須添加WindowListener才能在關閉主框架時啟用它。 但是,您將松開阻止功能-這可能比實現它的價值更難實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM