2014-04-21 35 views
0

正如標題所示,我試圖在JScrollPane中使用JPanel(因爲面板幾乎總是會溢出屏幕,所以我需要能夠滾動)。我有一個奇怪的問題,因爲PaintComponent方法沒有按照我的預期進行繪製。我目前只是試圖用純色填充JPanel,然而填充JPanel實際上只是繪製未填充的框,因爲它部分填充但不完全填充。PaintComponent在JScrollPane中的JPanel上不能正常工作

JPanel代碼(請注意simPanel IS THE JSCROLLPANE):

private class myPanel extends JPanel { 
    @Override 
    public void paintComponent (Graphics g) { 
     super.paintComponent(g); 
     g.setColor(Color.RED); 
     g.fillRect(0, 0, simPanel.getWidth(), simPanel.getHeight()); 
    } 
} 

WindowResizeListener連接到JScrollPane本身並運行下面的方法,到目前爲止,這似乎是正確的調整,因爲我有一直在使用print語句來獲取scrollpane的大小,並且在調整應用程序大小時它正變得越來越大/越來越小。

public void componentResized(ComponentEvent ce) { 
    myJPanel.setSize(simPanel.getSize()); 
} 

這工作按預期如果JPane升不添加到JScrollPane(即它被添加到另一個JPanel或類似),但JScrollPane本身似乎並不想正確地作畫。我想知道是否有我缺少的東西。它看起來像我的JPanel是正確的大小,因爲該框是在滾動窗格中的正確大小本身我不能填充它,即使我打電話給fillRect

編輯:我認爲這可能與ScrollPane的大小有關。我瞎搞與不同的佈局管理器的時刻,並注意到,滾動窗格很氣質,其規模和不斷搬回固定大小因某種原因......

+0

爲了儘快獲得更好的幫助,請發佈[MCVE](http://stackoverflow.com/help/mcve)(最小完整和可驗證示例)。 –

回答

1

的代碼爲我的JPanel(請注意simPanel是JSCROLLPANE):

你的JPanel的繪畫代碼不應該引用滾動窗格的大小。無論如何,您只需使用面板的setBackground(...)方法來設置其背景顏色。

JScrollPane中(如面板幾乎總是超出屏幕的顯示,所以我需要能夠滾動)

當面板的首選大小比的尺寸越大,滾動條會自動出現滾動窗格。您的面板的佈局管理器負責確定面板的首選大小,因此您不需要任何自定義代碼。