簡體   English   中英

Java Swing-在componentResized()事件上調整JPanel的大小

[英]Java Swing - Resize JPanel on componentResized() event

我正在嘗試在調整窗口大小時將JPanel的大小調整為JFrame內100%的寬度。 但是JPanel永遠不會調整大小...

我正在使用IntelliJ

這是我的代碼:

public static void createAndShowGUI() {
    frame = new JFrame("MyApplication");
    frame.setLayout(new GridBagLayout());

    menuPanel = new MenuPanel();
    contentPanel = new ContentPanel();

    MainFrame mainFrame = new MainFrame();
    vimInitialiser = new VimInitialiser();

    frame.addWindowListener(mainFrame);
    frame.addComponentListener(mainFrame);

    JComponent newContentPane = mainFrame;
    newContentPane.setOpaque(true);
    frame.setContentPane(newContentPane);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setMinimumSize(new Dimension(1200, 500));
    frame.pack();
    frame.setVisible(true);
    frame.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);

    frame.add(menuPanel.getMenuPanel());
    frame.add(contentPanel.getContentPanel());
}

這是我的JPanel類:

    public class ContentPanel extends JPanel{

    public JPanel getContentPanel(){
        JPanel contentPanel = new JPanel(true);
        JLabel label = new JLabel("ContentPanel");
        Border border = BorderFactory.createLineBorder(Color.black);
        contentPanel.setPreferredSize(new Dimension(940, 480));
        contentPanel.setBorder(border);

        contentPanel.add(label);

        return contentPanel;
    }
}

    public class MenuPanel extends JPanel{

    public JPanel getMenuPanel(){
        JPanel menuPanel = new JPanel(true);
        JLabel label = new JLabel("MenuPanel");
        Border border = BorderFactory.createLineBorder(Color.black);
        menuPanel.setPreferredSize(new Dimension(200, 480));
        menuPanel.setBorder(border);
        menuPanel.add(label);

        return menuPanel;
    }
}

請幫我解決這個問題。

嘗試使用BorderLayout

frame.setLayout(new BorderLayout());

然后添加如下窗格:

frame.add(menuPanel.getMenuPanel(), BorderLayout.NORTH); 
frame.add(contentPanel.getContentPanel(), BorderLayout.CENTER);

我相信錯誤是您沒有為gridbag約束設置“填充”和“重量”。 我認為這將解決問題。

GridBagConstraints gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
frame.add(menuPanel, gridBagConstraints);
frame.add(contentPanel, gridBagConstraints);

您可能需要對約束進行一些嘗試,以使其完全符合您的要求。

暫無
暫無

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

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