Java JFrame大小影响JButton大小,但仅垂直影响?

Java JFrame大小影响JButton大小,但仅垂直影响?,java,swing,layout,jframe,jbutton,Java,Swing,Layout,Jframe,Jbutton,我对JFrame如何垂直扩展JButton以匹配JFrame最小大小而不是水平扩展感到困惑。我希望它不向任何一个方向延伸,并知道它为什么延伸或不延伸 import javax.swing.*; import java.awt.*; public class somestring { public static void main(String []args){ JFrame frame = new JFrame(); Container content

我对JFrame如何垂直扩展JButton以匹配JFrame最小大小而不是水平扩展感到困惑。我希望它不向任何一个方向延伸,并知道它为什么延伸或不延伸

import javax.swing.*;
import java.awt.*;

public class somestring {
    public static void main(String []args){
        JFrame frame = new JFrame();
        Container content = frame.getContentPane();
        content.setLayout(new BorderLayout());
        
        
        Toolkit toolkit = Toolkit.getDefaultToolkit();
        Dimension max = toolkit.getScreenSize();
        frame.setMinimumSize(new Dimension(1000,1000));
        frame.setSize(max);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JButton s = new JButton("generate somestring");
        s.setPreferredSize(new Dimension(400,400));
        content.add(s, BorderLayout.WEST);
        frame.pack();
        frame.setResizable(false);
        frame.setVisible(true);
    }
}
我对JFrame如何垂直扩展JButton以匹配JFrame最小大小而不是水平扩展感到困惑

框架内容窗格的默认布局管理器是
BorderLayout
,因此不需要上述内容

在任何情况下,它垂直扩展的原因都是因为当您向
西部添加组件时,这是
边界布局的规则

阅读上的Swing教程中的部分。
BorderLayout
部分将解释向
WEST
添加组件的规则

我希望它不向任何一个方向延伸

然后,您需要使用不同的布局管理器

例如,您可以使用
流程布局
。该按钮将在框架顶部居中

或者您可以使用
GridBagLayout
(使用默认的GridBagConstraints)。按钮将水平和垂直居中

frame.pack();
frame.setResizable(false);
在调用pack()之前,应该设置可调整大小的属性


不确定为什么要设置最小大小并调用setSize()。如果希望按钮以其首选大小显示,则只需调用pack()。

谢谢您提供的信息。我没有注意到borderlayout的属性导致了这种情况。
frame.pack();
frame.setResizable(false);
frame.setMinimumSize(new Dimension(1000,1000));
frame.setSize(max);