繁体   English   中英

为什么 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区域上设置面板时,按钮会离开屏幕并且不会环绕。 如果我将面板设置在NORTHSOUTH区域,我只会看到两个按钮。 如果我将面板设置在CENTER区域,它们会环绕并且可以清楚地看到所有这些。 为什么是这样?

如果您将组件添加到BorderLayout框架,则EastWest区域将让组件获得其首选宽度。 由于面板包含三个按钮并将它们并排放置,面板的首选宽度是三个按钮并排的宽度。 因此,它会“离开屏幕”,因为这是首选宽度。 如果您改为在EAST区域的框架上单击按钮并用足够的文本填充它,也会发生同样的情况。

CENTER区域获取其他区域尚未占用的剩余部分。 因为这是政策CENTER区域,所述面板没有得到它的优选的宽度或高度,因此迫使面板的部件来包装。

NORTHSOUTH区域而言,面板将获得其首选高度,即最高组件的高度(在示例中,所有按钮的高度相同)。 因此,它认为没有理由换行。 然而,面板没有得到它的首选宽度。 因此按钮被“切断”,因为面板可以具有的最大宽度是框架的宽度。 您会注意到随着框架调整大小,按钮出现在屏幕上,因为面板上有可用空间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM