JScrollPane всегда очищает мою панель - PullRequest
2 голосов
/ 27 сентября 2010

Hy .. У меня есть JPanel, и в этом contentPanel я добавил несколько других пользовательских панелей, назначил им места и т. Д. Итак, теперь я добавил JScrollPane в contentPanel и всегда, когда прокручиваю вниз, он очищает мою contentPanel, но панели все еще там, но не видны ...

Как я могу сделать их снова видимыми?

Это мой код для добавления Panel в 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();
}

Спасибо

Ответы [ 2 ]

1 голос
/ 27 сентября 2010

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

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

this.setLayout(new FlowLayout());

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

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

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

0 голосов
/ 27 сентября 2010

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

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

...