正如标题所示,我试图在JPanel
内绘制JScrollPane
(因为面板几乎总是溢出屏幕所以我需要能够滚动)。我有一个奇怪的问题,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
本身并运行以下方法,到目前为止它似乎正在调整大小,因为我一直使用print语句来获取滚动窗格的大小,它是在调整应用程序大小时变得越来越大。
public void componentResized(ComponentEvent ce) {
myJPanel.setSize(simPanel.getSize());
}
如果JPane
未添加到JScrollPane
(即它已添加到另一个JPanel
或类似内容),但JScrollPane
本身不会似乎想要正确地绘画。我想知道是否有我遗失的东西。看起来我JPanel
的大小合适,因为在滚动窗格中,框是正确的大小,即使我正在调用fillRect
,我也无法填充它。
答案 0 :(得分:1)
我的JPanel的代码(请注意simPanel是JSCROLLPANE):
JPanel的绘画代码不应该引用滚动窗格的大小。在任何情况下,您只需使用面板的setBackground(...)
方法设置其背景颜色。
JScrollPane(因为面板几乎总是溢出屏幕所以我需要能够滚动)
当面板的preferredSize大于滚动窗格的大小时,滚动条将自动出现。面板的布局管理器负责确定面板的首选大小,因此您不需要任何自定义代码。