[英]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.