JFrame 大小影响 JButton 大小但仅垂直?
JFrame size affecting JButton size but only vertically?
我对 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);
}
}
I am confused about how JFrame extends the JButton vertically to match JFrame min size but not horizontally.
content.setLayout(new BorderLayout());
...
content.add(s, BorderLayout.WEST);
框架内容窗格的默认布局管理器是BorderLayout
,因此不需要上面的内容。
无论如何,它垂直延伸的原因是因为当您将组件添加到 WEST
.
时,这是 BorderLayout
的规则
阅读 Layout Managers 上的 Swing 教程部分。 BorderLayout
部分将解释向 WEST
添加组件的规则。
I would like for it to not extend in either direction
那么你需要使用不同的布局管理器。
例如,您可以使用 FlowLayout
。该按钮将位于框架顶部的中央。
或者您可以使用 GridBagLayout
(使用默认的 GridBagConstraints)。该按钮将水平和垂直居中。
frame.pack();
frame.setResizable(false);
您应该在调用 pack() 之前设置可调整大小 属性。
frame.setMinimumSize(new Dimension(1000,1000));
frame.setSize(max);
不确定为什么要设置最小大小并调用 setSize()。如果您希望按钮以其首选大小显示,则只需调用 pack()。
我对 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);
}
}
I am confused about how JFrame extends the JButton vertically to match JFrame min size but not horizontally.
content.setLayout(new BorderLayout());
...
content.add(s, BorderLayout.WEST);
框架内容窗格的默认布局管理器是BorderLayout
,因此不需要上面的内容。
无论如何,它垂直延伸的原因是因为当您将组件添加到 WEST
.
BorderLayout
的规则
阅读 Layout Managers 上的 Swing 教程部分。 BorderLayout
部分将解释向 WEST
添加组件的规则。
I would like for it to not extend in either direction
那么你需要使用不同的布局管理器。
例如,您可以使用 FlowLayout
。该按钮将位于框架顶部的中央。
或者您可以使用 GridBagLayout
(使用默认的 GridBagConstraints)。该按钮将水平和垂直居中。
frame.pack();
frame.setResizable(false);
您应该在调用 pack() 之前设置可调整大小 属性。
frame.setMinimumSize(new Dimension(1000,1000));
frame.setSize(max);
不确定为什么要设置最小大小并调用 setSize()。如果您希望按钮以其首选大小显示,则只需调用 pack()。