2

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();
}

谢谢

4

2 回答 2

1

听起来您没有正确使用 LayoutManager。

创建您的 JFrame 后(我在您的构造函数中猜测)添加以下内容(例如):

this.setLayout(new FlowLayout());

对于您正在尝试做的事情,这肯定不是最好的布局管理器,但会阻止add调用覆盖显示的组件。

you will need to read further about LayoutManagers

besides this, it's not really advisable to extend JFrame. It's better practice to treat JFrame as a member of your class just like all the other components.

于 2010-09-26T20:51:10.883 回答
0

I have the answer! :)

I use a GridLayout not a FlowLayout, so it's fine and it automatically refreshes the panels =)

于 2010-09-26T21:33:28.583 回答