2014-01-09 77 views
1

我試圖讓hist(HistoryPanel extends JPanel)成爲JScrollPane的視口,histScroll。問題是水平滾動條不會顯示出來,除非我強迫它顯示滾動條策略(在下面的代碼中),即使我強制它,也無處滾動。問題是HistoryPanel的大小拒絕水平增加。我嘗試了不同的方式來設置hist的大小,但它仍然保持水平固定大小。但是,垂直方向,它工作得很好。我不明白問題是什麼。JScrollPane視口大小

public SuperPanel(GoPanel panel) 
{ 
    super(new BorderLayout()); 
    setFocusable(false); 
    score = new ScorePanel(); 
    go = panel; 
    go.scorePanel = score; 
    score.setPreferredSize(new Dimension(panel.getWidth(), 20)); 
    hist = new HistoryPanel(go); 
    hist.setPreferredSize(new Dimension(panel.getWidth()*20, 100*5)); 
    //hist.setMinimumSize(new Dimension(panel.getWidth()*20, 100*5)); 
    //hist.setSize(new Dimension(panel.getWidth()*20, 100*5)); 
    go.histPanel = hist; 
    histScroll = new JScrollPane(hist, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 
    histScroll.setPreferredSize(new Dimension(panel.getWidth(), 100)); 
    add(score, "North"); 
    add(panel, "Center"); 
    add(histScroll, "South"); 
} 

我可以向下滾動所有我想要的,但我無法滾動到右側。這是一個大問題,因爲它切斷了一些圖像,在這個程序中,水平滾動實際上比垂直滾動更重要。

enter image description here

+0

發佈鏈接至您的圖像。 – alex2410

+0

panel.getWidth()的值是什麼? – wxyz

+0

[這是截圖](http://i.imgur.com/cCEx8LI.png) – iamstickfigure

回答

1

你不需要設置首選大小組件,您添加到JScrollPane,因爲這將是不可滾動的,只是刪除下一行:

hist.setPreferredSize(new Dimension(panel.getWidth()*20, 100*5));

又讀next post約將大小設置爲組件。

+0

我不認爲這真的有幫助。該面板必須是一個大型畫布,可以顯示我可以轉動的圖像。如果我刪除該行,我無法滾動。 – iamstickfigure

+0

並且該面板中沒有組件,所以它不像讓佈局管理器處理它那麼簡單。這只是一個我用paintComponent繪製的畫布。我在上面的評論中發佈了一個截圖 – iamstickfigure