2016-03-03 28 views
1

我创建了一个JPanel,其中有一个JScrollPane。我只想在那里显示3个项目并超过这些项目,我可以向下滚动查看它们。java中的JScrollPane/JPanel中的固定项目数

我用下面的代码来创建JPanelJScrollPane

 JScrollPane slide_scroll = new JScrollPane(); 
     slide_scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 
     slide_scroll.setBounds(1158, 11, 196, 528); 
     contentPane.add(slide_scroll); 

     JPanel scrollPanel = new JPanel(); 
     scrollPanel.setLayout(new GridLayout(5,1)); 
     slide_scroll.setViewportView(scrollPanel); 

但加入了6项后,所有项目都显示在代替表格的方式一列。我想的是,添加了6一个时,我使用滚动条可以查看

+0

我假设你已经知道当你用'setBounds'设置界限时要插入的面板的大小。你能否提供如何向'scrollPanel'添加元素的例子? – vsimkus

+0

当按下按钮时,我正在添加JInternal框架。我已经设置了它们的大小,并在前5次正确显示 – Mervyn

回答

4

documentation for GridLayout

当已设置的行数和列数通过构造函数或setRows和setColumns方法将其设置为非零值,则忽略指定的列数。而是根据指定的行数和布局中的组件总数确定列数。因此,例如,如果指定了三行两列并将九个组件添加到布局,则它们将显示为三行三列。仅当行数设置为零时,指定列数才会影响布局。

您的布局将始终有五行。您指定一列的事实是无关紧要的。

如果您希望布局始终有一列,请使用new GridLayout(0, 1)

+0

当我使用它时,我添加的J内部框架占据了整个空间。当我添加另一个时,添加的前一个项目减半,每次添加新项目时,前一个项目减半 – Mervyn

+0

使用1列GridBag布局,确保您的自定义组件不喜欢展开,并添加一个不可见(背景色)JPanel底部吸取组件不需要的所有空间。 – tucuxi

+0

@Mervyn为什么不将'JInternalFrame'添加到'JDesktopPane'? – MadProgrammer