2013-06-13 67 views
1

我開始與Java和Swing的高度,所以我有一個非常簡單的問題,但我無法找到任何(簡單)的方式來解決它...怎樣纔可以有一個JScrollPane填寫一個JPanel

我的意思是隻有一個列表滾動,佔據面板的整個高度,沒有更多。以下是我已經寫的代碼,感謝名單,以幫助我找到一種方法來實現我的目標:

public class TestCode { 

public static void main(String[] args) { 

    JFrame window = new JFrame("Test"); 
    window.setSize(300, 300); 
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JPanel panelUp = new JPanel(); 
    JPanel panelCenter = new JPanel(); 
    JPanel panelDown = new JPanel(); 

    window.add(panelUp, BorderLayout.NORTH); 
    window.add(panelCenter, BorderLayout.WEST); 
    window.add(panelDown, BorderLayout.SOUTH); 

    panelUp.setBackground(new Color(200, 240, 200)); 
    panelCenter.setBackground(new Color(240, 200, 200)); 
    panelDown.setBackground(new Color(200, 200, 240)); 

    Vector v = new Vector(); 
    v.addElement("Element 1"); 
    v.addElement("Element 2"); 
    v.addElement("Element 3"); 
    v.addElement("Element 4"); 
    v.addElement("Element 5"); 
    v.addElement("Element 6"); 

    JList list = new JList(v); 
    JScrollPane listScroller = new JScrollPane(list); 

    panelCenter.add(listScroller); 

    window.setVisible(true); 
} 

} 
+0

如果你想使用'BorderLayout',你首先必須將佈局設置爲'BorderLayout'。試試'window.setLayout(...)'。 – Sebastian

回答

8

的默認佈局爲JPanelFlowLayout,對於要集中控制,並填寫一個JPanel,你需要使用BorderLayout。試試這個:

panelCenter.setLayout(new BorderLayout()); 
panelCenter.add(listScroller, BorderLayout.CENTER); 
+0

嗨,謝謝尼克,那正是我需要的。對不起,這很簡單,但我對Java中的佈局並不熟悉。 順便說一句,** panelCenter.add(listScroller,BorderLayout.CENTER)**是好看不中用,一切工作正常,而不 –

3

你並不真的需要panelCenter,只需添加listScroller直接到根窗格中,用window.add(listScroller, BorderLayout.CENTER)。如果要用BorderLayout填充組件的整個空間,則使用CENTER很重要。有關更多信息,請參閱the tutorial on BorderLayout

如果你想保留panelCenter,請確保你明確地給它一個BorderLayoutJPanel的默認佈局是FlowLayout

我會用:

JPanel panelCenter = new JPanel(new BorderLayout()); 
相關問題