簡體   English   中英

Java隱藏JFrame1和JFrame2,何時停用JFrame0?

[英]Java hide JFrame1 and JFrame2, when JFrame0 is deactivated?

當用戶從“ mainFrame”中單擊時,是否可以隱藏我的應用程序的所有其他JFrame?

我嘗試了這個

   public void windowActivated(WindowEvent we) {
        frame1.setVisible(true);
        frame.setVisible(true);
    }

    public void windowDeactivated(WindowEvent we) {
        frame1.setVisible(false);
        frame2.setVisible(false);
    }`

但這不起作用。 我所有的Windows開始閃爍。 我無法將JFrame2設置為無法對焦。

還有其他方法嗎?

改用非模式對話框,默認情況下會對問題進行排序。

import javax.swing.*;

class TestDialogMinimize {

    public static void main(String[] args) {
        Runnable r = new Runnable() {
            public void run() {
                JFrame f = new JFrame("Has a Dialog");

                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setSize(400,400);

                JDialog d = new JDialog(f);
                d.setSize(200,200);
                f.setVisible(true);
                d.setVisible(true);
            }
        };
        SwingUtilities.invokeLater(r);
    }
}

此答案中的非模式對話框建議是一種解決方法。 另請參見此答案

如果出於某些原因您需要繼續使用框架,可以使用

frame1.setState(Frame.ICONIFIED)

並用

frame1.setState(Frame.NORMAL)

在代碼塊中處理這些內容,例如:

frame0.addWindowStateListener(new WindowStateListener() {

        @Override
        public void windowStateChanged(WindowEvent e) {
                // handle change
        }
    });

該問題的答案所述

如果要在關閉frame0時關閉所有框架,則可以使用:

frame0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

當frame0關閉時,退出程序並關閉所有幀。 如果您只是隱藏在關閉狀態,請使用窗口偵聽器。 您可以在WindowListener使用frame1.setVisible(false)

暫無
暫無

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

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