2010-09-26 5 views
2

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

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

Это мой код, чтобы добавить панель в 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(); 
} 

Благодаря

+1

«Если нужен код, пожалуйста разместить его!» вы должны опубликовать свой. – pstanton

ответ

0

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

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

1

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

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

this.setLayout(new FlowLayout()); 

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

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

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

+0

bragboy, я знаю, что я написал. – pstanton

+0

Вы думаете, что если я установлю Layout FlowLayout, он автоматически добавит мои панели в нужное положение? Я попробовал это, и панели находятся в том же положении, что и первое. (Внахлест) –

Смежные вопросы