Если весь цикл while выполняется в потоке диспетчеризации событий Swing в ответ на событие нажатия кнопки, поток не сможет обновлять представление на экране до тех пор, пока не завершится код обработки события (конец действия actionPerformedметод).
Я не уверен, что вы пытаетесь достичь здесь - возможно, анимация?Вы можете использовать класс таймера Swing (javax.swing.Timer) для многократного запуска события с небольшой задержкой между срабатываниями, и в ответ на каждое событие вы можете добавить строку в таблицу.Пока ваш код обработки событий быстро завершается в ответ на каждое событие, Swing должен иметь возможность перерисовывать представление между событиями.Вам действительно нужно хорошо понимать модель многопоточности Swing, иначе проблемы такого рода действительно сбивают с толку.Это не так уж сложно - есть хорошие ресурсы для чтения, если вы ищете, например, «Поток событий Swing».
Re: вызов repaint () - это не будет работать как repaint () идругие методы, такие как validate () и т. д., будут когда-либо только помечать компонент как подлежащий перекрашиванию - компонент фактически не будет перекрашиваться на экране, пока Swing не получит возможность сделать это, и если вы перехватываете поток SwingЦикл while: рисование будет бесплатным, пока вы не завершите цикл и не завершится код обработки событий.