为什么按钮在 Flow Layout 上离开屏幕?
Why do buttons go off screen on Flow Layout?
我正在从 Head First Java 学习流程布局,我正在尝试让按钮环绕,因为它说 Flow Layout
应该(从左到右,从上到下)。
import javax.swing.*;
import java.awt.*;
public class Flow {
public static void main(String[] args) {
Flow gui = new Flow();
gui.go();
}
public void go() {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
JButton buttonOne = new JButton("hello");
JButton buttonTwo = new JButton("this is");
JButton buttowThree = new JButton("woody");
panel.add(buttonOne);
panel.add(buttonTwo);
panel.add(buttonThree);
frame.getContentPane().add(BorderLayout.EAST, panel);
frame.setSize(200,200);
frame.setVisible(true);
}
}
但是,当在框架的 EAST
区域设置面板时,按钮会离开屏幕并且不会环绕。如果我将面板设置在 NORTH
或 SOUTH
区域,我只会看到两个按钮。如果我将面板设置在 CENTER
区域,它们会环绕并且可以清楚地看到它们。为什么是这样?
如果您要将组件添加到 BorderLayout
框架,East
和 West
区域将使组件获得其首选宽度。由于面板包含三个按钮并将它们并排放置,因此面板的首选宽度是三个并排按钮的宽度。因此,它将变为 "off-the-screen",因为这是首选宽度。如果您改为点击 EAST
区域框架上的按钮并用足够的文本填充它,则会发生同样的情况。
CENTER
区域得到其他地区尚未处理的剩余部分。由于这是 CENTER
区域的策略,面板确实 NOT 获得其首选宽度或高度,因此强制面板的组件换行。
就 NORTH
和 SOUTH
区域而言,面板将获得其首选高度,即最高组件的高度(在示例中所有按钮的高度相同)。因此,它认为没有理由包装。但是,面板 不会 获得其首选宽度。因此,按钮是 "cut off",因为面板可以具有的最大宽度是框架的宽度。当框架调整大小时,您会注意到按钮出现在屏幕上,因为 space 在面板上可用。
我正在从 Head First Java 学习流程布局,我正在尝试让按钮环绕,因为它说 Flow Layout
应该(从左到右,从上到下)。
import javax.swing.*;
import java.awt.*;
public class Flow {
public static void main(String[] args) {
Flow gui = new Flow();
gui.go();
}
public void go() {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
JButton buttonOne = new JButton("hello");
JButton buttonTwo = new JButton("this is");
JButton buttowThree = new JButton("woody");
panel.add(buttonOne);
panel.add(buttonTwo);
panel.add(buttonThree);
frame.getContentPane().add(BorderLayout.EAST, panel);
frame.setSize(200,200);
frame.setVisible(true);
}
}
但是,当在框架的 EAST
区域设置面板时,按钮会离开屏幕并且不会环绕。如果我将面板设置在 NORTH
或 SOUTH
区域,我只会看到两个按钮。如果我将面板设置在 CENTER
区域,它们会环绕并且可以清楚地看到它们。为什么是这样?
如果您要将组件添加到 BorderLayout
框架,East
和 West
区域将使组件获得其首选宽度。由于面板包含三个按钮并将它们并排放置,因此面板的首选宽度是三个并排按钮的宽度。因此,它将变为 "off-the-screen",因为这是首选宽度。如果您改为点击 EAST
区域框架上的按钮并用足够的文本填充它,则会发生同样的情况。
CENTER
区域得到其他地区尚未处理的剩余部分。由于这是 CENTER
区域的策略,面板确实 NOT 获得其首选宽度或高度,因此强制面板的组件换行。
就 NORTH
和 SOUTH
区域而言,面板将获得其首选高度,即最高组件的高度(在示例中所有按钮的高度相同)。因此,它认为没有理由包装。但是,面板 不会 获得其首选宽度。因此,按钮是 "cut off",因为面板可以具有的最大宽度是框架的宽度。当框架调整大小时,您会注意到按钮出现在屏幕上,因为 space 在面板上可用。