Java 使用gridBagLayout调整窗口大小

Java 使用gridBagLayout调整窗口大小,java,swing,gridbaglayout,Java,Swing,Gridbaglayout,我在这个问题上被困了很长时间,我不知道怎么做,尽管我在谷歌上搜索了很多次。我的问题是,我有一个程序,带有一个从JFrame获得的容器。问题是,我把菜单栏放对了,就在我的两个按钮下面,但是当我最大化窗口时,它看起来是一个讨厌的空白,我不想出现在那里。如果我不最大化窗口,组件将被精细放置,如下所示: 但是,当我最大化窗口时,似乎是恼人的空间(红色标记的空间): 我想要的是菜单栏和按钮像第一张图片一样卡在角落里。菜单栏和按钮的gridbaglayout代码如下: //MenuBar gbc

我在这个问题上被困了很长时间,我不知道怎么做,尽管我在谷歌上搜索了很多次。我的问题是,我有一个程序,带有一个从JFrame获得的容器。问题是,我把菜单栏放对了,就在我的两个按钮下面,但是当我最大化窗口时,它看起来是一个讨厌的空白,我不想出现在那里。如果我不最大化窗口,组件将被精细放置,如下所示:

但是,当我最大化窗口时,似乎是恼人的空间(红色标记的空间):

我想要的是菜单栏和按钮像第一张图片一样卡在角落里。菜单栏和按钮的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);
这不是添加
JMenuBar
的方式,而是使用。例如:

frame.setMenuBar(menuBar);

然后,按钮应按需要排列

谢谢,部分工作正常。我的意思是,JMenuBar在角落里被卡住了,但是按钮没有,还有一件事,为什么JMenuBar是这样添加的?为什么我不能把它添加到一个容器中?你可以把它添加到一个容器中,但是用户习惯于在窗口的顶部有<代码> jMunuBar < /Cord>,而不是在中间。但是你可以添加它们。对于按钮,请提供适当的帮助,因为我们无法提供全部帮助。删除与问题无关的所有不必要的代码,如图像、ActionListeners等,只需使用
JButton
s和
JMenuBar
创建一个简单的GUI,这样我们就可以复制您的问题并帮助您解决问题。您还可以提供一个图像,说明调整大小后按钮的放置方式吗@Victor26567另外,根据,这是将
JMenuBar
添加到
JFrame
@Victor26567的正确方法。几小时前,在OP关于这个主题的前一个问题中已经提供了这个建议和教程链接:我想让你知道,这样你就不会再浪费时间了,酷,感谢@camickr,它提醒我在回答这些问题之前检查低代表用户的个人资料,以检查类似的事情…不要再通过转发问题浪费人们的时间了。你在最后一个问题中得到了答案。您完全忽略了给出的建议,这里重复了完全相同的建议。我们为您提供了一个关于如何使用菜单的Swing教程链接,这样您就可以阅读该教程并复制演示代码和实验。
frame.setMenuBar(menuBar);