java-如何使JScrollPane与嵌套JPanels一起正常工作?

我正在使用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(),它告诉布局管理器重新计算其大小.

上一篇:java-如何在用户关闭Applications JFrame之后但程序退出之前直接保存一些对象?


下一篇:java-Netbeans平台中的多线程编程