2014-01-12 12 views
0

所以我正在開發一個應用程序。我有一個很大的問題,我知道我可能忽略了一些愚蠢的東西,但是我的scollpanes沒有滾動。有人可以結賬下面的代碼,並告訴我我做錯了什麼?JScrollPane不會滾動 - Java桌面應用程序

rotationPanel = new JPanel(); 
rotationPanel.setLayout(null); 
rotationLabels = new JLabel[countStarters(team)]; 
resetXY(5,5); 
for(int i = 0; i < countStarters(team); i++){ 
    rotationLabels[i] = new JLabel(team.rotation.get(i).getName()); 
    rotationLabels[i].setForeground(Color.BLACK); 
    addComp(rotationLabels[i], rotationPanel, labelX, labelY, labelSize); 
    labelY += 25; 
} 

//Other Code in between 

rotationBar = new JScrollPane(rotationPanel); 
rotationBar.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
rotationBar.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); 
rotationBar.setPreferredSize(new Dimension(520, 150)); 
addComp(rotationBar, this, 15, 75, new Dimension(520, 150)); 

//addComp method: 
public void addComp(JComponent comp, JComponent panel, int xPos, int yPos, Dimension size){ 
    comp.setLocation(xPos,yPos); 
    comp.setSize(size); 
    panel.add(comp); 
} 

的resetXY()方法只是設置了

任何幫助,將不勝感激

乾杯, 戴夫組件的x和y位置

+1

uff不建議使用'null'佈局 – nachokk

+0

大家都這樣說。我更喜歡使用這種GUI的空佈局。更多的控制 – jDave1984

+1

當你調整它的工作正常?在其他決議呢? – nachokk

回答

1

JScrollPane使用組件preferredSize或者如果實現Scrollable#getPreferredScrollableViewportSize來確定滾動窗格和其視圖端口可以是多大。當視窗比較大時,滾動窗格會出現滾動條

Swing API的設計圍繞使用佈局管理器,選擇不使用佈局管理器會導致問題和額外工作無法結束。

佈局管理器可以幫助您瞭解系統之間的差異,包括字體渲染,DPI,屏幕大小和渲染管線等等。

+0

所以,如果我要使用佈局管理器。哪一個會給我最大的控制權?我使用過Grid和Gridbag,並沒有真正留下深刻的印象。我正在考慮使用Spring,但我並不太熟悉它。我需要一個能夠讓我將大多數組件放在我想要的地方 – jDave1984

+0

我更喜歡GridBagLayout,但我也在常規基礎上使用BorderLayout和GridLayout,並將它們組合在一起。你也可以考慮看看MigLayiut。別忘了,您可以使用EmptyBorder和GridBagLayout,使用插槽來填充組件 – MadProgrammer

+0

好點。當我考慮使用網格包時,我沒有想到這一點。我通常喜歡用null來控制數量,但這些滾動條被證明是一種痛苦。谷歌我去! – jDave1984

0

我覺得你的JPanel需要有它的大小設置,否則它會縮小以適應JScrollPane。

+0

沒有。 Scrollpane不關心面板的「大小」,它使用不同的方法來確定面板的大小和滾動窗格應該是... – MadProgrammer