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