2011-06-20 250 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);