Вместо setSize()
используйте pack()
, чтобы воспользоваться тщательно рассчитанным предпочтительным размером компонента. Вам также нужно инициализировать ваш ярлык:
labels[i] = new JLabel("10000000000000000000000000000000000000");
Также рассмотрим javax.swing.Timer
вместо отдельной темы.
Добавление: для удобства каждый Swing Timer
имеет общий фоновый поток, и actionPerformed()
вызывается в потоке диспетчеризации событий. Альтернатива - SwingWorker
, здесь показано .