[英]Android - buttons go off the edge of the screen, but text view fits in the screen
[英]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
区域将让组件获得其首选宽度。 由于面板包含三个按钮并将它们并排放置,面板的首选宽度是三个按钮并排的宽度。 因此,它会“离开屏幕”,因为这是首选宽度。 如果您改为在EAST
区域的框架上单击按钮并用足够的文本填充它,也会发生同样的情况。
CENTER
区域获取其他区域尚未占用的剩余部分。 因为这是政策CENTER
区域,所述面板没有得到它的优选的宽度或高度,因此迫使面板的部件来包装。
就NORTH
和SOUTH
区域而言,面板将获得其首选高度,即最高组件的高度(在示例中,所有按钮的高度相同)。 因此,它认为没有理由换行。 然而,面板没有得到它的首选宽度。 因此按钮被“切断”,因为面板可以具有的最大宽度是框架的宽度。 您会注意到随着框架调整大小,按钮出现在屏幕上,因为面板上有可用空间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.