Java 在JScrollPane内的JPanel上,PaintComponent未按预期工作

Java 在JScrollPane内的JPanel上,PaintComponent未按预期工作,java,swing,jpanel,jscrollpane,paintcomponent,Java,Swing,Jpanel,Jscrollpane,Paintcomponent,正如标题所示,我试图在JScrollPane中绘制JPanel(因为面板几乎总是会溢出屏幕,所以我需要能够滚动)。我遇到了一个奇怪的问题,PaintComponent方法并不像我预期的那样绘制。我目前正试图用纯色填充JPanel,但实际上它不是填充JPanel,而是绘制一个未填充的框,如中所示,它是部分填充的,而不是完全填充的 myJPanel的代码(请注意simPanel是JSCROLLPANE): 我的WindowResizeListener附加到JScrollPane本身并运行以下方法,到

正如标题所示,我试图在
JScrollPane
中绘制
JPanel
(因为面板几乎总是会溢出屏幕,所以我需要能够滚动)。我遇到了一个奇怪的问题,
PaintComponent
方法并不像我预期的那样绘制。我目前正试图用纯色填充
JPanel
,但实际上它不是填充
JPanel
,而是绘制一个未填充的框,如中所示,它是部分填充的,而不是完全填充的

my
JPanel的代码(请注意simPanel是
JSCROLLPANE
):

我的
WindowResizeListener
附加到
JScrollPane
本身并运行以下方法,到目前为止,它似乎正在正确调整大小,因为我一直在使用print语句来获取滚动窗格的大小,并且随着我调整应用程序的大小,它正在变大/变小

public void componentResized(ComponentEvent ce) {
    myJPanel.setSize(simPanel.getSize());
}
如果未将
JPane
l添加到
JScrollPane
(即,它被添加到另一个
JPanel
或类似对象中),但
JScrollPane
本身似乎不希望正确绘制,则此功能正常工作。我想知道我是否遗漏了什么。看起来我的
JPanel
是正确的大小,因为该框在滚动窗格中的大小是正确的,即使我正在调用
fillRect
,我也无法填充它

编辑:我认为这可能与滚动窗格的大小有关。我现在正在和不同的布局管理器混在一起,我注意到滚动窗格的大小非常多变,出于某种原因,滚动窗格会一直回到固定大小

我的JPanel的代码(请注意simPanel是JSCROLLPANE):

JPanel的绘制代码不应引用滚动窗格的大小。在任何情况下,您只需使用面板的
setBackground(…)
方法来设置其背景色

JScrollPane(因为面板几乎总是会溢出屏幕,所以我需要能够滚动)


当面板的首选大小大于滚动窗格的大小时,滚动条将自动显示。面板的布局管理器负责确定面板的首选尺寸,因此您不需要任何自定义代码。

要更快获得更好的帮助,请发布一个(最简单、完整且可验证的示例)。
public void componentResized(ComponentEvent ce) {
    myJPanel.setSize(simPanel.getSize());
}