如何解决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 = 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最小大小而不是水平匹配感到困惑。
content.setLayout(new BorderLayout());
...
content.add(s,BorderLayout.WEST);
该框架的内容窗格的默认布局管理器是BorderLayout
,因此不需要上述操作。
无论如何,它垂直延伸的原因是因为这是将组件添加到BorderLayout
时WEST
的规则。
在Layout Managers上的Swing教程中阅读本节。 BorderLayout
的部分将说明向WEST
添加组件的规则。
我希望它不会向任一方向延伸
然后,您需要使用其他布局管理器。
例如,您可以使用FlowLayout
。该按钮将在框架顶部居中。
或者您可以使用GridBagLayout
(带有默认的GridBagConstraints)。该按钮将在水平和垂直方向居中。
frame.pack();
frame.setResizable(false);
您应该在调用pack()之前设置可调整大小的属性。
frame.setMinimumSize(new Dimension(1000,1000));
frame.setSize(max);
不确定为什么要设置最小大小并调用setSize()。如果希望按钮以其首选大小显示,则只需调用pack()。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。