簡體   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