2014-05-15 36 views
0

我有使用CardLayout和幾個JPanel的情況,因爲我現在只想看到這種情況。但是,我需要使JPanel的(每個)組件都可以自動調整大小。我google了一下,發現GridLayout或GridBagLayout(正如我想的那樣)可以在調整JFrame大小時改變形狀。將CardLayout與Java中的GridLayout結合使用

任何人都可以幫助我如何結合這兩種佈局,並使事情一起工作。

P.S.所有JPanel都在單獨的類中,而主類是包含帶CardLayout的JFrame的類。還包含菜單欄。所有JPanel都有絕對佈局(我想這也是一個問題),但我對佈局不是很友好。

+0

'所有JPanel都有絕對佈局(我想這也是一個問題)' - 是的,這是問題所在。使用絕對佈局時,組件不會調整大小。 '但是我對Layout不是很友好。「 - 那是你需要使用的解決方案,所以你需要花一些時間學習如何使用每種不同的佈局來獲得你想要的外觀。首先閱讀[如何使用佈局]的Swing教程中的部分(http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html)以獲取更多信息和工作示例。 – camickr

回答

1

在這種example中,JPanel命名cardsCardLayout,但被添加到cardsCardPanel每個實例都有默認JPanel佈局,FlowLayout。您可以更改佈局並在CardPanel構造函數中添加其他組件以查看效果。

public CardPanel(String name) { 
    this.name = name; 
    this.setLayout(new GridLayout(0, 1); // a one column grid 
    this.setBackground(new Color(random.nextInt())); 
    this.add(new JLabel(name)); 
    this.add(new …); 
    … 
}