Вы можете добавить WindowListener к каждому кадру и прослушивать изменения состояния внутреннего кадра.
final JInternalFrame f1, f2;
//...
f1.addInternalFrameListener(new InternalFrameAdapter() {
void internalFrameIconified(InternalFrameEvent e) {
// respond to iconfiy
}
});
f2.addInternalFrameListener(new InternalFrameAdapter() {
void internalFrameIconified(InternalFrameEvent e) {
// respond to iconify
}
});
Что касается фактического обозначения внутреннего фрейма, вам нужно использовать менеджер рабочего стола, соответствующий вашему JDesktopPane, для выполнения действия:
JDesktopPane desktop;
DesktopManager mgr = desktop.getDesktopManager();
mgr.iconifyFrame(frame);