JScrollPane всегда очищает мою панель

Hy.. У меня есть JPanel, и в этом 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();
}

Спасибо


person Christian 'fuzi' Orgler    schedule 26.09.2010    source источник
comment
Если нужен код, пожалуйста, разместите его! вы должны опубликовать свой.   -  person pstanton    schedule 27.09.2010


Ответы (2)


похоже, вы неправильно используете LayoutManager.

после создания вашего JFrame (я предполагаю, что в вашем конструкторе) добавьте следующее (например):

this.setLayout(new FlowLayout());

это, безусловно, не будет лучшим менеджером компоновки для того, что вы пытаетесь сделать, но не позволит вызовам add переопределить отображаемый компонент.

вам нужно будет прочитать больше о LayoutManager

кроме того, не рекомендуется расширять JFrame. Лучше рассматривать JFrame как член вашего класса, как и все остальные компоненты.

person pstanton    schedule 26.09.2010
comment
Вы думаете, если я установлю Layout на FlowLayout, он автоматически добавит мои панели в правильное положение? Я попробовал, и панели находятся в том же положении, что и в первый раз. (перекрываются) - person Christian 'fuzi' Orgler; 27.09.2010

У меня есть ответ! :)

Я использую GridLayout, а не FlowLayout, так что все в порядке, и он автоматически обновляет панели =)

person Christian 'fuzi' Orgler    schedule 26.09.2010