2016-05-17 132 views
0

我正在創建一個GUI,我有一個問題。JScrollPane沒有顯示在滾動上

我有一個JPanel與信息,並在它的結束,我還有一個JPanelJScrollPane需要時滾動。

這是代碼:

public BreadCrumpsDisplayer(JPanel father) 
{ 
    this.setBackground(new java.awt.Color(200, 200, 200)); 
    this.setPreferredSize(new java.awt.Dimension(father.getSize().width, height)); 
    javax.swing.GroupLayout MigasDePanLayout = new javax.swing.GroupLayout(this); 
    this.setLayout(MigasDePanLayout); 
    sp = new JScrollPane(this); 
    sp.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); 
    sp.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
    for (int i = 0; i < 8; i++) { 
     JButton ab = new JButton("HHH"); 
     ab.setSize(100,50); 
     ab.setLocation(i*300, 0); 
     this.add(ab); 
    } 
    father.add(sp, java.awt.BorderLayout.PAGE_END); 
    addMouseListener(this); 
addMouseMotionListener(this); 
} 

我的班級是一個JPanel。我設定顏色和大小。然後,我用我的類創建ScrollPane作爲構造函數的視圖參數。設置水平(當裏面的按鈕不在我看來)和垂直(從不)

然後,我創建了8個按鈕,並將它們放在我的面板中。

問題是我看不到它們,當我嘗試移動ScrollBar時它不起作用。

快照

enter image description here

我不知道爲什麼我看不到按鈕的其餘部分。

PD:我的類是另一個JPanel的組件。

+0

你正在把每個按鈕放在300的多邊形的位置上。難道你的整個酒吧都小於那個嗎? – threaz

回答

4

您沒有正確使用GroupLayout,因此面板沒有適當的首選尺寸。你不能只是添加組件到面板。您還需要指定GroupLayout約束。我建議你不要使用GroupLayout。它是爲使用單個佈局管理器的IDE而設計的。

ab.setSize(100,50); 
ab.setLocation(i*300, 0); 

利用佈局管理的要點是讓佈局管理器確定組件的尺寸和/位置。正確使用佈局管理器時,滾動窗格上的滾動條將自動工作。

我建議你可以使用FlowLayout或橫向BoxLayout。請閱讀Swing教程Using Layout Manager中的部分,瞭解上述每種佈局的工作示例。

+0

我使用流程佈局,並且一切都變好了,謝謝! – Transy

+0

@Transy,很高興幫助。不要忘了單擊複選標記以「接受」答案,以便人們知道問題已解決。 – camickr