【发布时间】:2014-04-21 01:52:19
【问题描述】:
正如标题所示,我正在尝试在JScrollPane 内绘制JPanel(因为面板几乎总是会溢出屏幕,所以我需要能够滚动)。我遇到了一个奇怪的问题,PaintComponent 方法没有像我预期的那样绘制。我目前只是尝试用纯色填充JPanel,但实际上并没有填充JPanel,它实际上只是绘制了一个未填充的框,例如,它已部分填充但未完全填充。
我的JPanel 的代码(请注意simPanel 是JSCROLLPANE):
private class myPanel extends JPanel {
@Override
public void paintComponent (Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.fillRect(0, 0, simPanel.getWidth(), simPanel.getHeight());
}
}
我的WindowResizeListener 附加到JScrollPane 本身并运行以下方法,到目前为止,它似乎可以正确调整大小,因为我一直在使用打印语句来获取滚动窗格的大小并且它变得更大/更小当我调整应用程序的大小时。
public void componentResized(ComponentEvent ce) {
myJPanel.setSize(simPanel.getSize());
}
如果JPanel 未添加到JScrollPane(即,它被添加到另一个JPanel 或类似的)但JScrollPane 本身似乎不想正确绘制,这将按预期工作。我想知道我是否缺少某些东西。看起来我的 JPanel 大小合适,因为该框在滚动窗格本身内的大小是正确的,即使我正在调用 fillRect,我也无法填充它。
编辑:我认为这可能与 ScrollPane 的大小有关。我目前正在使用不同的布局管理器,并注意到滚动窗格的大小非常喜怒无常,并且由于某种原因不断回到固定大小......
【问题讨论】:
-
为了尽快获得更好的帮助,请发布MCVE(最小完整且可验证的示例)。
标签: java swing jpanel jscrollpane paintcomponent