我在调整窗口大小时尝试在JFrame中将JPanel的大小调整为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;
}
}
请帮我解决这个问题。
答案 0 :(得分:0)
尝试使用BorderLayout
。
frame.setLayout(new BorderLayout());
然后添加如下窗格:
frame.add(menuPanel.getMenuPanel(), BorderLayout.NORTH);
frame.add(contentPanel.getContentPanel(), BorderLayout.CENTER);
答案 1 :(得分:0)
我认为错误在于你没有设置“填充”字样。和'重量'#39;对于gridbagconstraints。我认为这将解决问题。
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);
你可能需要在限制条件下玩一下,让它按照你想要的方式排列。