Java: смена панелей во время выполнения

Следующий метод имеет конечный результат, который мне нужен. Проблема в том, что при вызове метода начальный pnlMain остается видимым до тех пор, пока новый pnlMain не будет создан и не заменит исходный. Смысл этого метода в том, чтобы изменить панель, создав новую, но этот процесс занимает немного времени, поэтому я пытаюсь, чтобы в это время отображалась панель «загрузки».

public void changePanel() {
    remove(pnlMain);
    add(load);
    repaint();
    pnlMain = new HunterPanel(settings); // HunterPanel extends JPanel
    remove(load);
    add(pnlMain);
    repaint();
    pnlMain.requestFocus();
}

person user3586099    schedule 29.04.2014    source источник
comment
Ваш вопрос, как добавить панель загрузки, когда панель изменена?   -  person mdewitt    schedule 29.04.2014


Ответы (1)


«Изменение панелей во время выполнения»

Правильный способ - использовать CardLayout, который позволит вам переключаться между представлениями. Дополнительные сведения см. в разделе Как использовать CardLayout. См. простой пример здесь

Но просто чтобы вы знали, где вы ошибаетесь в своем коде, если вы удаляете и добавляете компоненты во время выполнения, вам нужно revalidate(). Но в вашем случае используйте CardLayout. После того, как вы узнаете это, вы будете счастливы, что сделали :-)

person Paul Samsotha    schedule 29.04.2014