使用gridBagLayout调整窗口大小

时间:2018-03-27 18:53:51

标签: java swing gridbaglayout

我被困在这大量的时间,我不知道该怎么做,尽管在谷歌上多次搜索。我的问题是,我有一个程序,从JFrame获得一个容器。问题是,我把我的menuBar正确地放在我的两个按钮下面,但是当我最大化窗口时,它看起来是一个恼人的白色空间,我不想在那里。如果我没有最大化窗口,组件放置得很好,如下所示:

enter image description here

但是当我最大化窗口时,看起来很烦人的空间(标记为红色的那个):

enter image description here

我想要的是,MenuBar和按钮像第一张照片一样卡在那个角落里。菜单栏和按钮的gridbaglayout的代码如下:

//MenuBar
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.weightx = 0.5;
    gbc.weighty = 0.0; // si no ponemos esto la barra NO se queda anclada en la esquina
    gbc.gridx = 0;
    gbc.gridy = 0;

    //gbc.anchor = GridBagConstraints.NORTHWEST;
    //gbc.gridwidth = 2; 
    //gbc.gridheight = 1;
    menuBar.setBorder(BorderFactory.createLineBorder(Color.black));
    pane.add(menuBar, gbc);
//buttons
    gbc.gridx = 0;
    gbc.gridy = 1;
    gbc.anchor = GridBagConstraints.LINE_START;//reseteamos su valor 
    gbc.gridwidth = GridBagConstraints.REMAINDER; // con esto indicamos que va a ser el ultimo componente de esa fila
    gbc.weightx = 0.0;
    gbc.weighty = 0.0;
    gbc.fill = GridBagConstraints.NONE;
    gbc.gridwidth = 2;
    gbc.gridheight = 1;
    panel.setBorder(BorderFactory.createLineBorder(Color.black)); //luego quitar es para ver lo que ocupaba el panel
    pane.add(panel, gbc);

1 个答案:

答案 0 :(得分:0)

pane.add(menuBar, gbc);

这不是您添加JMenuBar的方式,而是使用JFrame#setMenuBar(...)添加frame.setMenuBar(menuBar); 。例如:

{{1}}

然后按钮应按照需要排列