Windows a de la facilité pour empêcher windows de voler; au lieu de cela, il affiche l'icône de la barre. Sous XP c'est sur par défaut (le seul endroit où j'ai vu pour la modifier à l'aide de TweakUI, mais il y a un paramètre de registre quelque part). Dans Vista, ils ont peut-être changé la valeur par défaut et/ou exposés en tant qu'utilisateur accessible avec le paramètre out-of-the-box de l'INTERFACE utilisateur.
La prévention de windows à partir de forcer eux-mêmes à l'avant et à la prise de focus est une fonctionnalité depuis Windows 2K (et j'en suis heureux pour elle).
EDIT: cela dit, j'ai un peu de Java app que j'utilise pour me rappeler de mes activités pendant le travail, et il fait lui-même la fenêtre active toutes les 30 minutes (configurable, bien sûr). Il fonctionne toujours de manière cohérente sous Windows XP et jamais clignote dans la barre de titre de la fenêtre. Il utilise le code suivant, appelé dans le thread de l'INTERFACE utilisateur en tant que résultat d'un événement de minuterie de cuisson:
if(getState()!=Frame.NORMAL) { setState(Frame.NORMAL); }
toFront();
repaint();
(la première ligne restaure si réduite... en fait, il serait de les restaurer en cas de maximisée trop, mais je n'ai jamais ainsi).
Alors que j'ai l'habitude de cette application réduit, assez souvent, c'est simplement derrière mon éditeur de texte. Et, comme je l'ai dit, il fonctionne toujours.
EDIT2: j'ai une idée sur ce que votre problème pourrait être - peut-être que vous avez une condition de concurrence avec le setVisible (). toFront() ne peut être valable que si la fenêtre est en fait affiché lorsqu'il est appelé; j'ai eu ce problème avec requestFocus() avant. Vous devrez peut-être mettre la toFront() l'appel à une INTERFACE d'écoute sur une fenêtre de l'événement activé.