Accueil > Forum > > > > changer la transparence d'un JPanel
changer la transparence d'un JPanel
mardi 17 mars 2009 à 13:54:12 |
changer la transparence d'un JPanel

jimmypage64
|
Bonjour,
Je débute sur JAVA. Je voudrais changer la transparence d'un JPanel sur le MouseEntered et MouseExited. Voici le code de ma classe Case (extends JPanel)
... public void mouseEntered(MouseEvent e) { this.setBackground(new Color(255,0,0,80)); this.repaint();} public void mouseExited(MouseEvent e) { this.setBackground(new Color(0,0,255,20)); this.repaint(); } ...
Le problème est qu'au lieu de me changer le fond de ma case, j'ai l'impression qu'a chaque this.repaint que je fais, le setBackground me rajoute une couche en fond de mon composant. Au final a force de rentrer et de sortir de ma Case, elle devient de plus en plus opaque et la couleur alterne entre le rouge et le violet...
Quelqu'un aurait-il une solution pour remedier à ce problème ?
PS: dans l'exemple le résultat attendu serait : - lorsque la souris est hors de la case : fond bleu et transparent - lorsque la souris est dans la case : fond rouge et un peu moins transparent.
Merci d'avance [8)]Zoso
|
|
mardi 17 mars 2009 à 14:59:35 |
Re : changer la transparence d'un JPanel

jojolemariole
|
Salut, J'ai testé rapidement ton exemple et j'ai le même "problème", pour moi ça ressemble à un bug. Tu peux toujours le résoudre comme ça, mais ce n'est pas optimal, je pense : fenetre = new JFrame("Test"); fenetre.setSize(640, 480); fenetre.setLocationRelativeTo(null); fenetre.setLayout(new BorderLayout()); panelFond = new JPanel(new BorderLayout()); panelFond.setBackground(Color.WHITE); panel = new JPanel(); panel.setBackground(BLEU); panel.addMouseListener(new MouseListener() { @Override public void mouseClicked(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { panel.setBackground(ROUGE); //panel.getParent().repaint(); fenetre.repaint(); } @Override public void mouseExited(MouseEvent e) { panel.setBackground(BLEU); //panel.getParent().repaint(); fenetre.repaint(); } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseReleased(MouseEvent e) { } }); panelFond.add(panel); fenetre.add(panelFond); fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fenetre.setVisible(true);
|
|
mardi 17 mars 2009 à 15:03:33 |
Re : changer la transparence d'un JPanel

jojolemariole
|
Re, (j'ai pas accès à l'éditeur avancé sous Opera du coup le formatage a un peu foiré) fenetre = new JFrame("Test");fenetre.setSize(640, 480);fenetre.setLocationRelativeTo(null);fenetre.setLayout(new BorderLayout());panelFond = new JPanel(new BorderLayout());panelFond.setBackground(Color.WHITE);panel = new JPanel();panel.setBackground(BLEU);panel.addMouseListener(new MouseListener() {@Overridepublicvoid mouseClicked(MouseEvent e) {} @Overridepublicvoid mouseEntered(MouseEvent e) {panel.setBackground(ROUGE);//panel.getParent().repaint();fenetre.repaint();} @Overridepublicvoid mouseExited(MouseEvent e) {panel.setBackground(BLEU);//panel.getParent().repaint(); fenetre.repaint();} @Overridepublicvoid mousePressed(MouseEvent e) {} @Overridepublicvoid mouseReleased(MouseEvent e) {} }); panelFond.add(panel);fenetre.add(panelFond);fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);fenetre.setVisible(true);
|
|
mardi 17 mars 2009 à 20:06:28 |
Re : changer la transparence d'un JPanel

benmor
|
Je pense pas que ce soit un bug jojolemariole.
Si tu fait un repaint sur le panel, alors seul celui-ci sera repaint, et donc la transparence se fait par rapport à ce qui existe déjà. Si tu fait un repaint sur la fenêtre, alors il repaint d'abord ce qu'il y a sous le panel et ensuite la transparence se fait donc sur ce qu'il y a sous le panel.
Ca me paraît normal à moi.
"panel.getParent().repaint();" ne fonctionne pas dans ton cas (j'ai testé) sans doute parce que tu utilise un BorderLayout et donc tout l'espace est utilisé donc (optimisation) seul panel est repaint. J'ai testé avec un FlowLayout, ça fonctionne.
|
|
Cette discussion est classée dans : changer, case, fond, jpanel, transparence
Répondre à ce message
Sujets en rapport avec ce message
Transparence du fond d'un composant [ par ElvadriaS ]
Salut,J'ai un JPanel avec une image de fond qui s'affiche tres bien.Par dessus j'ai un autre JPanel avec dedans un JTextArea qui eux aussi s'affiche t
[Swing][Jtable] Couleur de fond [ par terminagroo ]
Bonjour,Voilà en fait je veux créer ma propre JTable, avec une couleur spécifique. Donc pour l'instant je suis arrivée à changer la couleur des entête
image jframe [ par pretyzenta ]
bonsoir, S'il vous plait je suis entrin de préparer une application pour mon stage,mon problème : je veux superposer des composants sur une image (déf
Changer de JPanel sans ouvrir une nouvelle fenêtre [ par akarui ]
Bonjour, je suis dans une école d'ingénieur et pour un projet info je dois faire un programme en Java, mais nos profs d'info ne nous ont pas vraiment
Proble GridLayout [ par sayone ]
Bonjour à tous,Je suis débutant et je dois créer une genre d'interface graphique mais le probleme c'est que je n'arrive pas à positionner les texte et
Transparence [ par andolini ]
Bonjour, j'ai une image faite sur photoshop avec un objet et un fond j'aimerais savoir si c'etait possible de rendre juste le fond de mon image transp
Editeur de fenêtre JAVA comment afficher un fond d'écran? [ par ln67insa ]
Bonjour, Je créée plusieurs JPanel que j'ai mis dans une JFrame avec l'éditeur de fenêtre. J'ai trouvé comment changer la couleur de fond du JPanel ma
fond d'une case d'un tableau [ par genjouna ]
slt, je veux mettre le fond d'une case d'un tableau en couleur mais je n'arrive pas,et j'ai pas compris d'ou il vient le probléme. svp aidez moi Ob
Changer dynamiquement un JPanel par un autre [ par Angenoir ]
Salut.J'aimerais concevoir une application graphique sympa mais je me heurte à quelques problèmes, mes connaissances en Java étant assez limitées Voil
Urgence : Fonds transparents [ par wt ]
Salut tlm,Comment affecte-t-on une couleur transparente à un composants swing, un JPanel par exemple ?Je dispose d'1 couleur en gradient : son intensi
Livres en rapport
|
Derniers Blogs
SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|