簡體   English   中英

Java Swing JFrame最小化/最大化調整大小錯誤

[英]Java Swing JFrame minimize/maximize resize bug

問題是,當我嘗試最大化JFrame時,框架確實被最大化,但內容大小被保留。

http://i.imgur.com/7q5Yh9F.png

我的主要框架類:

private CardLayout layout;

private SettingsFrame settingsFrame;

private Container contentPane;
Frame frame = this;

private ApplicationFrame() {       
    contentPane = getContentPane();
    layout = new CardLayout();
    contentPane.setLayout(layout);
    initializeFrame();
    settingsFrame = new SettingsFrame(model);
    initializeMenuBar();
    initializePanels();                
    showPage(FIRST_PAGE);
    this.addWindowStateListener(listener);
}

public SettingsFrame getSettingsFrame() {
    return settingsFrame;
}

private void initializeFrame() {
    this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    this.setTitle(APPLICATION_TITLE);
    this.settingsFrame = new SettingsFrame(model);
    this.setSize(1400, 900);
    this.setLocationRelativeTo(null);
}    

private void initializePanels() {
    add(new Panel(), FIRST_PAGE);
    add(new Panel(), SECOND_PAGE);
    add(new Panel(), THIRD_PAGE);
}      

我試圖創建一個監聽器,捕獲最大化事件,並嘗試:

revalidate();
repaint();

invalidate();
validate();

但沒有成功。

我發現:

frame.setExtendedState(JFrame.MAXIMIZED_BOTH);

是核心最大化框架,但我不能使用它是監聽器,因為最大化事件已經發生。

你正在使用CardLayout ,遺憾的是它不允許你調整JComponent大小。 因為CardLayout可以保存/管理共享相同顯示空間的一個或多個組件。
如果要使用它,則應添加JPanel並將該面板的布局設置為CardLayout

我強烈建議您閱讀以下文檔: 布局管理器的可視指南

暫無
暫無

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

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