Java JFrame大小影响JButton大小,但仅垂直影响?
我对JFrame如何垂直扩展JButton以匹配JFrame最小大小而不是水平扩展感到困惑。我希望它不向任何一个方向延伸,并知道它为什么延伸或不延伸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
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);