![](/img/trans.png)
[英]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.