2011-06-20 248 views
1

我想在jscrollpane上添加一個Jpanel;我也想只有垂直滾動。我想設置我的jPanel「flowLaout」的佈局,並通過jpanel.add(component)方法在我的代碼中將幾個組件添加到我的jPanel中。結果是所有的組件都放在只有一行,jpanel的寬度和寬度沒有顯示出來。我已經使用這個技巧,都失敗了:Java:jscrollpane禁用水平滾動

jScrollPane1.setHorizontalScrollBar(null); 
jScrollPane1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); 

回答

3

Wrap Layout應該爲你工作。

+0

沒有它不工作。水平滾動功能被禁用,但I組件顯示在一行中。 JPanel佈局是流程佈局。 – sajad

+0

@sajad,這段代碼適合我,否則我不會在博客上發佈代碼。因此,張貼您的SSCCE dmononstrates您的問題,所以我可以看到問題是WrapLayout或使用WrapLayout的代碼。 – camickr

+0

對不起,我第一次沒有注意到鏈接。我以爲你參考我的代碼。但是,正如你所說的那樣,這是正確的非常感謝先生! – sajad

1

我不確定您當前項目的具體情況,但我會推薦MigLayout。它從來沒有讓我誤解。

我目前正在寫嵌入MigLayout面板的觸摸屏界面達4層或5層深,並沒有一個單一的問題。

+0

這可能是個好主意。謝謝。我剛剛嘗試以前的答案,我的問題解決了。感謝您的解決方案。 – sajad

0

請使用以下策略來打開垂直滾動和關閉水平滾動(與Java SE 7中工作):

Panel graphicPanel = new Panel(); 
JScrollPane scrollbar = new JScrollPane(graphicPanel); 
scrollbar.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); 
scrollbar.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
scrollbar.setPreferredSize(new Dimension(1300, 600)); 
scrollbar.setVisible(true); 
add(scrollbar, BorderLayout.CENTER);