JDialog transparent

yanngrenier
JDialog transparent

Est-ce que quelqu'un connait une façon de jouer avec l'aspect transparent d'un JDialog???

Merci :)

fredericmazue

Transparente elle même ? Je veux dire, ses composants sont transparents.
Ou transparente pour voir le bureau derrière ?

Pour le bureau c'est normalement impossible. Je me suis même laissé dire que c'est un problème sous Mac
Bon il y a bien quelques grosses bidouilles, mais je pense qu'il vaut mieux oublier.

yanngrenier

Ok, merci c'est ce que je croyais. J'avais lu des possibilités avec JNI et JNA, mais il n'est pas question pour mon patron d'utiliser des .dll.

Alors, il me reste l'option d'une Window qui elle est déjà transparente et nous possédons une implémentation d'un JPanel avec des options ALPHA qui permettent de jouer avec la transparence.

Sauf que je dois trouver la façon de rendre ma Window MODALE....

Des suggestions???

Merci

yanngrenier

Je sais qu'il existe un projet appelé JModalWindow, mais mon patron refuse d'intégrer au framework aussi volumineux s'il existe une solution plus simple.

fredericmazue

Quote:
J'avais lu des possibilités avec JNI

Certes mais ce n'est plus du Java, cela devient du C++ (ou du C sion veut), c'est à dire le langage adapté à ce travail. (oui je suis lourdingue mais je n'ai pas pu m'en empêcher :oops:
Il le sait que ça existe C++ ton patron ?

Quote:
Alors, il me reste l'option d'une Window qui elle est déjà transparente

La je dois dire que je ne comprends pas.

Quote:

et nous possédons une implémentation d'un JPanel avec des options ALPHA qui permettent de jouer avec la transparence.

Sauf que je dois trouver la façon de rendre ma Window MODALE....

Je comprends de moins en moins. Qu'est-ce qui empêche de mettre ce somptueux JPanel dans un JDialog ?

Quote:
Je sais qu'il existe un projet appelé JModalWindow, mais mon patron refuse d'intégrer au framework aussi volumineux s'il existe une solution plus simple.

C'est vraimant un marrant ton Boss :lol:

- 1 il choisit le langage qui va pas
- 2 il veut le beurre et l'argent du beurre en faisant ce que ne peut pas faire le langage qui va pas.
- 3 tout ça sans moyens supplémentaires.
- 4 il a la berlue. JModalWindow "un framework aussi volumineux". pfff il doit y avoir trois ou quatre fichiers Java à tout casser, avec une licence et la doc plus volumineux que le code dans les fichiers. :lol:

Fenêtres transparentes, code ultra light.... Ca me fait penser à l'histoire de Coluche et de la tranche de jambon tellement mince qu'elle n'avait qu'une face :lol:

Bon regarde grabFocus de JComponent. Ou éventuellement requestFocusInWindows
Eventuellement en enrichissant avec un gestionnaire d'événements FocusLost qui re-grab le Focus.
C'est la démarche classique sous X-Window d'où vient le terme grab. Comportement du truc sous diverses plates-formes non garanti à l'identique, attention :!:

Mais fais gaffe!!! Si tu fais ça tu vas très très probablement faire exactement la même chose que ce que fais JModalWindow. Ca va considérablement gonfler ton projet qui va devenir trop volumineux et tu va te faire virer.
Fais gaffe mec :!:
:lol: :lol: :lol:

yanngrenier

Hahahahaha!

Merci de ton aide encore une fois, je vais travailler là-dessus voir ce que je peux faire...

Je te reviens plus tard, qui sait je vais peut-être réinventer la roue ou plutôt le JModalWindow :)

fredericmazue

Quote:
je vais peut-être réinventer la roue ou plutôt le JModalWindow

Forcément...
Et tu vas te faire virer ;)

yanngrenier

Salut Fred,

Il semble que ce que je veux faire NE SE FAIT PAS!

D'accord, j'arrive à mettre ma JWindow MODALE, mais impossible de la mettre transparente. Sun spécifie que tout ce qui est HEAVYWEIGHT ne peut être transparent et JWindow est heavyweight.

Quote:

All AWT components are heavyweight and all Swing components are lightweight (except for the top-level ones: JWindow, JFrame, JDialog, and JApplet)

A lightweight component can have transparent pixels; a heavyweight is always opaque.

Je ne vois donc plus de solution!!! :cry:

fredericmazue

Quote:
Il semble que ce que je veux faire NE SE FAIT PAS

En effet.
Quote:
D'accord, j'arrive à mettre ma JWindow MODALE

Ok.
Quote:
mais impossible de la mettre transparente. Sun spécifie que tout ce qui est HEAVYWEIGHT ne peut être transparent et JWindow est heavyweight

Et c'est pourquoi je te disais ne pas comprendre quand tu annonçais avoir une Window et un JPanel transparent.
Oui la transparence n'est pas possible avec le bureau, je te l'ai dit tout de suite.
C'est même, me suis-je laissé dire, un problème sous Mac (mais moi je ne connais rien aux Mac) où les fenêtres Java ne se comportent pas comme les fenêtres natives. Tiens ? Qu'est-ce que ça va donner avec Vista et Aéro, je suis curieux de savoir ?
La seule trasparence possible c'est quand deux composants se chevauchent avec des bidouilles à base de setOpaque.
Mais la transparence avec le bureau (c'est ce que tu veux je suppose) on ne peut pas.
Java, ce n'est pas un langage pour programmer, tu le sais bien ;)

Désolé de ne pouvoir t'aider davantage, mais je crains que nous ayons fait le tour de la question. Sauf si on passe à JNI, mais même là ça risque d'être à ressort de bidouiller une fenêtre que la JVM voudra gérer aussi de son côté. Perso, je ne m'y aventurerais pas. C'est de la programmation contre-nature.

Quote:
Je ne vois donc plus de solution!!!

Changer de patron :?: :wink:

Bon il existe des bidouilles atroces dont le principe consiste à faire des captures d'écran de la fenêtre avant son affichage, pour ensuite "redessiner le fond dessus"
Du délire quoi. Moi je ne t'ai rien dit hein ? Je ne veux pas être accusé de complicité dans une affaire pareille, j'ai une réputation à préserver ;)