Если основные операции с графическим интерфейсом перестают функционировать после внесения изменений в ваши компоненты, есть большая вероятность того, что вы нарушили модель потоков Swing.Swing является однопоточным, и вы должны следовать простому правилу, гарантирующему, что действия, которые влияют на рисование GUI, выполняются в потоке диспетчеризации событий, или вы рискуете тупиковой или другого нежелательного поведения.
У вас есть пара вариантов.Вы можете использовать SwingWorker
или создать экземпляр Runnable
и перетащить его в SwingUtilities.invokeLater
или SwingUtilities.invokeAndWait
.Взгляните на эту ссылку , чтобы ознакомиться с концепциями потоков в Swing.