2015-12-19 2 views
1

После того, как я нажму кнопку, я хочу, чтобы некоторые из компонентов JPanel были удалены и некоторые новые были созданы.Как перерисовать автоматически после события, как кнопка?

Я могу удалить и добавить новые, но JPanel не перекрашивается. Только после того, как я сделаю что-то вручную, например, измените размер рамки, кадр «освежает», и я получаю то, что хочу.

Вот соответствующая часть кода, в этом примере он инициирует компоненты по данной дате:

private ClassName() { 
    date = Date.getToday(); 
    init(date.toString()); 
} 

private void lastDayActionPerformed(ActionEvent evt) {           
    this.removeAll(); 
    date = date.getYesterday(); 
    init(date.toString()); 
} 

ответ

5

Если вы хотите компонент повторно макет и перекрашивать после кнопка была нажата и после он изменяет состояние графического интерфейса пользователя, а затем напрямую позвонить в коде ActionListener в:

private void lastDayActionPerformed(ActionEvent evt) { 
    this.removeAll(); 
    date = date.getYesterday(); 
    init(date.toString()); 
    revalidate(); // re-lays out child components 
    repaint(); // repaints the component 
} 

Но, это действительно звучит как вы действительно хотите использовать CardLayout поменять взгляды на вас, так как это именно то, что был создан этот класс для.

+0

спасибо мужчина! revalidate был метод, который я отсутствовал. –

+0

@ShaharDotan Затем примите ответ (галочка слева). – user1803551

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