簡體   English   中英

關閉一個JFrame而不關閉另一個?

[英]Close one JFrame without closing another?

我想同時顯示兩個(或更多) JFrame
當我關閉其中一個(使用默認關閉按鈕)時,其他幀仍應可見。

我怎樣才能做到這一點?

如果您希望應用程序在關閉JFrame時終止,請使用

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)

代替

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

文檔

  • DO_NOTHING_ON_CLOSE (在WindowConstants中定義):不要做任何事情; 要求程序在已注冊的WindowListener對象的windowClosing方法中處理該操作。
  • HIDE_ON_CLOSE (在WindowConstants中定義):在調用任何已注冊的WindowListener對象后自動隱藏框架。
  • DISPOSE_ON_CLOSE (在WindowConstants中定義):在調用任何已注冊的WindowListener對象后自動隱藏和DISPOSE_ON_CLOSE框架。
  • EXIT_ON_CLOSE (在JFrame中定義):使用System exit方法退出應用程序。 僅在應用程序中使用它。

在澄清問題之前,這是我的答案,可能仍然有用:

如果要再次顯示相同的幀,可以在JFrame上使用setVisible(false)
否則,請調用dispose()刪除所有本機屏幕資源

它對你有幫助嗎?

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class TwoJFrames {
    public static void main(String[] args) {
        int nb = 4;
        if (args != null && args.length > 0) {
            nb = Integer.parseInt(args[0]);
        }

        final int frameCount = nb;
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                for (int i = 0; i < frameCount; i++) {
                    JFrame frame = new JFrame("Frame number " + i);
                    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                    JPanel p = new JPanel(new BorderLayout());
                    p.add(new JLabel("Click on the corner to close..."), BorderLayout.CENTER);
                    frame.setContentPane(p);
                    frame.setSize(200, 200);
                    frame.setLocation(100 + 20 * i, 100 + 20 * i);
                    frame.setVisible(true);
                }
            }
        });

    }
}

暫無
暫無

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

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