Ajouter un commentaire

fredericmazue

Quote:
Je sais que le mélange n'est pas idéal, mais c'est une demande de mon patron... alors pas de question SVP hihihi!

Patron ou pas, il a doublement tort:

1) on ne mélange pas Swing et AWT.
2) Quand on veut des zôlies fenêtres personnalisées, on prend C++ et une librairie convenable. Pas Java et Swing.

Bon j'ai regardé ton code.
Pour virer le bord de la fenêtre du appelles setUndecorated, si je comprends bien. C'est déjà à ressort puisque c'est une méthode AWT, mais bon faire une bidouile personnelle ne serait certainement pas mieux.

On voit bien que tu mets des composants AWT dans le JDialog (donc Swing). Ca faut pas le faire.
Après pour le déplacement, tu appelles setLocation en boucle, en suivant la souris je veux dire.
Bon comme déjà ce que tu fais ne peux pas marcher (Swing + AWT) et compte tenu qu'avec le mélange des genres de composants le rafraichissement va forcément te jouer des tours, si j'étais toi j'éviterais de rafraîchir en boucle comme ça. Au premier clic de souris, je ferai disparaître le JDialog, pour ne laisser qu'un cadre (un simple rectable quoi) et c'est ce cadre que je tracerais en suivant les déplacement du pointeur. Puis une fois le bouton de la souris relâché, je redessinerais le JDialog.
Comme ça, ca ira peut être. J'insiste sur le peut être. C'est évidemment beaucoup de boulot pour rien de tracer un rectangle dans le bureau et de l'effacer au fur et à mesure du déplacement.
Et puis attention, déjà que Java est le langage le moins portable du monde, alors là les problèmes de portabilités du risque d'en rencontrer...

Sinon pour une solution plus immédiate, je ne vois pas. Désolé. Sun le dit très clairement qu'il ne faut pas mélanger Swing et AWT. Même si tu réussis à faire marcher ton truc ici et maintenant, tu coures toujours le risque que le problème ou un problème connexe ressurgissent plus tard ou ailleurs :(

Evidemement il y a une solution malgré tout: tout AWT. Mais je sais déjà ce que ton patron va dire ;)

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 III   SSS   Y   Y      J  N   N 
I S Y Y J NN N
I SSS Y J N N N
I S Y J J N NN
III SSSS Y JJJ N N