Java JScrollPane总是清除我的面板

Java JScrollPane总是清除我的面板,java,panel,jscrollpane,repaint,Java,Panel,Jscrollpane,Repaint,Hy。。我有一个JPanel,在这个contentPanel中,我添加了一些其他自定义面板,并给出了它们的位置等。因此,现在我在contentPanel中添加了一个JScrollPane,当我向下滚动时,它总是会清除我的contentPanel,但面板仍然存在,但不可见 如何使它们再次可见 这是我将面板添加到contentPanel的代码。x,y,j是该位置的一些设置,因为我有一个固定的窗口 private void reloadContentPanel() { int x = -20

Hy。。我有一个JPanel,在这个contentPanel中,我添加了一些其他自定义面板,并给出了它们的位置等。因此,现在我在contentPanel中添加了一个JScrollPane,当我向下滚动时,它总是会清除我的contentPanel,但面板仍然存在,但不可见

如何使它们再次可见

这是我将面板添加到contentPanel的代码。x,y,j是该位置的一些设置,因为我有一个固定的窗口

private void reloadContentPanel() {

    int x = -200, y = 0, j = 1, row = 4;
    EventPanel panel = null;

    int i;
    for(i=0; i < this.images.size();i++)
    {
        panel = new EventPanel(this.images.get(i).getAbsolutePath(), 
                               this.images.get(i).getName());

        panel.setLocation(x+(j*200), y);
        j++;
        if(i == row) {
            x = -200;
            y += 205;
            j = 1;
            row += 5;
        }
        this.contentPanel.add(panel);
    }
    this.repaint();
}
private void reloadContentPanel(){
int x=-200,y=0,j=1,行=4;
EventPanel=null;
int i;
对于(i=0;i

谢谢

听起来您没有正确使用LayoutManager

在创建JFrame之后(我猜是在构造函数中),添加以下内容(例如):

对于您正在尝试执行的操作,这当然不是最好的布局管理器,但会阻止
add
调用覆盖显示的组件

您需要进一步阅读有关s的信息

除此之外,扩展JFrame实际上是不可取的。更好的做法是像对待所有其他组件一样,将JFrame视为类的一员。

我有答案!:)


我使用的是GridLayout而不是FlowLayout,所以这很好,它会自动刷新面板=)

“如果需要代码,请发布!”你应该发布你的。你认为如果我将布局设置为FlowLayout,它会自动将面板添加到正确的位置吗?我试过了,面板的位置和第一个一样。(重叠)
this.setLayout(new FlowLayout());