Я создал апплет, в котором при нажатии кнопки «Забыли пароль» я удаляю текущий JPanel в апплете и создаю новый JPanel, который отображает JComponents, связанные с восстановлением / забыванием пароля.
Я могу успешно очистить JPanel с помощью .removeAll (); НО после того, как я создаю все свои новые JComponents и добавляю их на панель содержимого (основной JPanel), апплет просто становится серым и не показывает новый JPanel и компоненты UNLESS Я изменяю размер апплет, затем перерисовывает и работает.
Я пытался поместить .invalidate () после того, как создал все новые JComponents, но это все еще не обновляет апплет?
Как сделать так, чтобы мой JPanel отображался после очистки его с помощью .removeAll () и добавления к нему различных J-компонентов?
Код:
public class App extends JApplet
{
JPanel mainPanel;
public void init()
{
SwingUtilities.invokeAndWait( new Runnable() {
public void run()
{
showLoginPanel(); // this shows fine on loading
}
});
}
public void showForgotPassPanel()
{
mainPanel.removeAll();
mainPanel = (JPanel) getContentPane();
Box hBox = Box.createHorizontalBox();
Box vBox = Box.createVerticalBox();
mainPanel.setLayout( new BorderLayout() );
... create components
... add components to mainPanel
mainPanel.invalidate(); // doesn't make new layout visible, not unless I resize the applet
}
}