我正在使用NetBeans在Java中构建Swing应用程序,我遇到布局问题。我的主框架包含JScrollPane
,其中包含名为JPanel
的{{1}},contentPanel
又包含名为JPanel
的{{1}}。程序启动时listPanel
为空,但当用户与程序交互时,会向其中添加不可预测数量的较小listPanel
s。我已经使用NetBeans GUI构建器将JPanel
的上边缘捕捉到listPanel
的顶部,并将其与底边相同。
我遇到的问题是,当更多组件添加到contentPanel
时,垂直滚动条不会显示在我的滚动窗格上。我的滚动窗格的listPanel
设置为verticalScrollBarPolicy
,其AS_NEEDED
设置为viewportView
。我认为我需要做的是在contentPanel
添加更多项目时使contentPanel
增长。
答案 0 :(得分:3)
我遇到的问题是,当更多组件添加到listPanel时,垂直滚动条不会显示在我的滚动窗格上。
当添加到滚动窗格的组件的首选大小大于滚动窗格的大小时,将显示滚动条。当您动态添加组件时,您需要告诉滚动窗格已更改的内容。所以你的基本代码应该是:
panel.add( subPanel );
panel.revalidate();
或者,因为您要在子面板中添加面板,您可能需要重新验证滚动窗格(我不记得了):
panel.add( subPanel );
scrollPane.revalidate();
关键是revalidate(),它告诉布局管理器重新计算其大小。
答案 1 :(得分:1)
使用其他LayoutManager。可以像BoxLayout一样实现垂直增长。还要记住,您可以使用多个布局并将它们嵌套在一起,以实现不同的效果。