我正在使用NetBeans在Java中构建Swing应用程序,但是布局存在问题.我的主框架包含一个JScrollPane,其中包含一个名为contentPanel的JPanel,而该JPanel又包含一个名为listPanel的JPanel.程序启动时listPanel为空,但是当用户与程序交互时,不可预测的较小的JPanels被添加到其中.我已使用NetBeans GUI生成器将listPanel的顶部边缘对齐到contentPanel的顶部,底部边缘也是如此.
我的问题是,当更多组件添加到listPanel时,垂直滚动条不会出现在我的滚动窗格中.我的滚动窗格的verticalScrollBarPolicy设置为AS_NEEDED,其viewportView设置为contentPanel.我想我需要做的是在将更多项目添加到listPanel时使contentPanel增长.
解决方法:
The problem I have is that when more components are added to listPanel the vertical scrollbar doesen’t appear on my scrollpane.
当添加到滚动窗格的组件的首选大小大于滚动窗格的大小时,将显示滚动条.动态添加组件时,您需要告诉滚动窗格某些更改.因此,您的基本代码应为:
panel.add( subPanel );
panel.revalidate();
或者,因为要向子面板添加面板,所以可能需要重新验证滚动面板(我不记得了):
panel.add( subPanel );
scrollPane.revalidate();
关键是revalidate(),它告诉布局管理器重新计算其大小.