JPanel
почти всегда является неправильным классом для подкласса. Почему бы вам не подкласс JComponent
?
Существует небольшая проблема с ImageIcon
в том, что конструктор блокирует чтение изображения. Не проблема при загрузке из приложения, но может быть, если вы потенциально читаете сетевое соединение. Существует много примеров использования AWT-времени MediaTracker
, ImageObserver
и друзей даже в демонстрациях JDK.