2013-04-03 53 views
0

有人能告訴我爲什麼我的JList和JLabel不會自動調整大小以填充整個屏幕?另外爲什麼不通過JButton自動調整大小?謝謝一噸請幫我使用Java中的JFrame和BorderLayout

public class testing extends JFrame { 

    private String[] testArray = {"apple", "banana", "cat"}; 
    private JPanel firstLayer = new JPanel(); 
    private JPanel secondLayerLeft = new JPanel(); 
    private JPanel secondLayerRight = new JPanel(); 
    private JList<String> leftText = new JList<String>(); 
    private JLabel rightOutput = new JLabel(); 
    private JButton button = new JButton("test button"); 

    public testing(){ 
     firstLayer.setLayout(new BorderLayout()); 
     firstLayer.add(secondLayerLeft, BorderLayout.WEST); 
     firstLayer.add(secondLayerRight, BorderLayout.EAST); 
     firstLayer.add(button, BorderLayout.SOUTH); 

     secondLayerLeft.add(leftText); 
     leftText.setListData(testArray); 
     secondLayerRight.add(rightOutput); 
     rightOutput.setText("testing 12345"); 


     secondLayerLeft.setBorder(new EtchedBorder()); 
     secondLayerRight.setBorder(new EtchedBorder()); 

     this.add(firstLayer); 
    } 


    public static void main(String[] args) { 
     testing gui = new testing(); 
     gui.setSize(700, 800); 
     gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     gui.setVisible(true); 
    } 

} 
+0

我該如何去做一個JList和JLabel伸展來填充整個屏幕並自動調整大小? – user2238529

回答

2

這是BorderLayout的基本功能。只有CENTER位置自動調整大小。任何邊框組件都可以改變尺寸的唯一方法是如果它們實際上改變了尺寸(getPreferredSize在進行下一個佈局之前改變)

1

您的左右面板的尺寸恰好是保持首選尺寸它們包含的JPanels。您的按鈕佔據整個邊界佈局的南部,就像它應該的一樣,並且調整得很漂亮。如果你想讓一些東西延伸到整個窗口,把它放在中間。

+0

我該如何去做一個JList和JLabel伸展來填充整個屏幕並自動調整大小? – user2238529

+0

@ user2238529就我個人而言,我會使用不同的佈局。根據需要,我可能會使用'GridBagLayout' – MadProgrammer

+0

這取決於你的意思。你是否希望它們的尺寸與其他尺寸相同,並且使它們的尺寸始終相同?在兩個維度?我認爲,很多人都很驚訝,要充分描述UI佈局有多複雜,以至於別人知道他們想要什麼。想象一下你的屏幕是否是你想要的,然後如果水平,垂直和兩個方向都伸展的話。無論如何,這將得到伸展部分。至少你沒有用20個單詞來描述你想要描述的堆疊多行多列怪物之一。 – arcy