Java:我如何更改';它在JScrollPane中吗?

Java:我如何更改';它在JScrollPane中吗?,java,swing,jpanel,jscrollpane,preferredsize,Java,Swing,Jpanel,Jscrollpane,Preferredsize,我在JScrollPane中有一个JPanel,当用户移动鼠标滚轮时,JPanel必须能够改变宽度。我为鼠标滚轮编写了事件监听器,它可以工作,但是JScrollPane似乎在内部JPanel上强制使用不同(恒定)的大小。 我在网上发现了一个ScrollablePanel类,但它似乎也有同样的问题。 我怎样才能修好它 谢谢:)好的,我似乎是靠运气找到了解决方案,所以我把它贴在这里,以防它对某人有用: -使用setPreferredSize而不是setSize设置JPanel的大小 -每次使用scr

我在JScrollPane中有一个JPanel,当用户移动鼠标滚轮时,JPanel必须能够改变宽度。我为鼠标滚轮编写了事件监听器,它可以工作,但是JScrollPane似乎在内部JPanel上强制使用不同(恒定)的大小。 我在网上发现了一个ScrollablePanel类,但它似乎也有同样的问题。 我怎样才能修好它


谢谢:)

好的,我似乎是靠运气找到了解决方案,所以我把它贴在这里,以防它对某人有用:

-使用setPreferredSize而不是setSize设置JPanel的大小 -每次使用scrollPane.setViewportView(面板)更新滚动条


对我来说没有意义,但它可以工作,所以我很满意。

在内部JPanel上使用setPreferredSize似乎可以工作,但在我单击滚动条之前,JScrollPane不会更新滚动条。使用layoutmanager时,您需要询问首选大小而不是setsize,因为您要求layoutmanager选择“正确的位置和大小”根据layoutmanageryep制定的规则,这是有道理的;但不合理的是,每次更改大小时我都要调用的setViewportView对我来说就像一个bug,也许我应该报告它