Dúvidas no JInternalFrame efeito de cor

Olá Pessoal, Tenho uma dúvida que é o Seguinte:

Tenho um JDestopPane que adiciono os meus JInternalFrame e nestes eles ficam minimizados utilizando o setIconifiable(true);
até aqui tudo bem.

Agora vem a dúvida.
eu queria colocar um evento neste JInternalFrame.
por exemplo:
quando clicar em um Botão , O JInternalFrame teria que ficar piscando esse,a idéia seria para chamar a atenção
para o usuário clicar e maximizar o JInternalFrame.

Até agora eu só vi ele sendo Maximizado, mas o Efeito de piscar é muito difícil.
nas minhas pesquisas não encontrei nada que pudesse ajudar.

Qualquer sugestão será bem vinda ! pois não sei mais o que fazer.
Obrigado!

Você tentou chamar o requestFocus ou o requestFocusInWindow?

Obrigado Marco!

O requestFocus ou o requestFocusInWindow funciona quando o IFrame tomar a frente do que já está aberto, mas o que preciso mesmo seria quando eles estiverem minimizados e eu clicar no botão no Rodapé , o frame3 pudesse ser acionado, piscando ( chamando a atenção) para o usuário clicar nele.

veja abaixo, fiz o fonte do que acontece.
peço apenas que quando abrir o aplicativo, por favor minimize todos os IFrames e clique no Botão abaixo para fazê-lo piscar. note que não acontece nada.
Já não sei o que posso fazer :?

Abraços

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyVetoException;
import java.util.HashMap;
import java.util.Iterator;

import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;

public class Teste extends JPanel {

private JDesktopPane jDesktopPane;
private JButton btnAcionar;
private HashMap<String, MyInternalFrame> iframes = new HashMap<String, MyInternalFrame>();

public Teste() {
initialize();
}

private JDesktopPane getJDesktopPane() {
if (jDesktopPane == null) {
    jDesktopPane = new JDesktopPane();
    jDesktopPane.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
    jDesktopPane.setBounds(new Rectangle(348, 90, 10, 10));
    jDesktopPane.setAutoscrolls(true);
    jDesktopPane.setSize(400, 322);
    jDesktopPane.setBackground( Color.white);

    iframes.put("title1", new MyInternalFrame("Title1"));
    iframes.put("title2", new MyInternalFrame("Title2"));
    iframes.put("title3", new MyInternalFrame("Title3"));
    iframes.put("title4", new MyInternalFrame("Title4"));
    for (Iterator iterator = iframes.values().iterator(); iterator.hasNext();) {
	MyInternalFrame type = (MyInternalFrame) iterator.next();
	jDesktopPane.add(type,JLayeredPane.TOP_ALIGNMENT);
    }
}

return jDesktopPane;
}

/**
 * This method initializes this
 */
private void initialize() {
    this.setLayout(new BorderLayout());
    this.setSize(new Dimension(400, 333));
    this.add(getJDesktopPane(), BorderLayout.CENTER);
    this.add(getBtnAcionar(), BorderLayout.SOUTH);
}

private JButton getBtnAcionar() {
if (btnAcionar == null) {
    btnAcionar = new JButton("CLICK PARA PISCAR");
    btnAcionar.addActionListener(new ActionListener(){
	public void actionPerformed( ActionEvent e){
	    try {
		 // tentativa de ficar piscando o InternalFrame 
		iframes.get("title3").setSelected(true);
		iframes.get("title3").requestFocus();
		iframes.get("title3").requestFocusInWindow();
		System.out.println("deu Foco!");
	    } catch (PropertyVetoException e1) {
		e1.printStackTrace();
	    }
	    //jDesktopPane.getDesktopManager().iconifyFrame(frames.get("title3")); 
	}});
    
}
return btnAcionar;
}

/**
 * @param args
 */
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(910,480);
frame.setResizable(false);
frame.add(new Teste());
frame.setVisible(true);

}

class MyInternalFrame extends JInternalFrame{
private JPanel jContentPane;
private JLabel label;

public MyInternalFrame(String title) {
    super(title,true,true,false,true);
    label = new JLabel(title);
    this.setSize(new Dimension(495, 380));
    this.setContentPane(getJContentPane());
    this.setVisible(true);
    this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
}

private JPanel getJContentPane() {
    if (jContentPane == null) {
	jContentPane = new JPanel();
	jContentPane.setLayout(new BorderLayout());
	jContentPane.add(label);
    }

    return jContentPane;
}
}

}