begin process at 2010 02 09 05:46:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Débutant(e)

 > 

changer la transparence d'un JPanel


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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() {

@Override

publicvoid mouseClicked(MouseEvent e) {

}

@Override

publicvoid mouseEntered(MouseEvent e) {

panel.setBackground(ROUGE);

//panel.getParent().repaint();

fenetre.repaint();

}

@Override

publicvoid mouseExited(MouseEvent e) {

panel.setBackground(BLEU);

//panel.getParent().repaint();

fenetre.repaint();

}

@Override

publicvoid mousePressed(MouseEvent e) {

}

@Override

publicvoid 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 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 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 Composants swing et fond transparent !!! [ 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 SVPPPPPP!!!!!!! G ENCORE BESOIN DE VOUS SVP : JTABLE!!! [ par jafouille94 ] bonjour la populasse!en fait je blok encore sur un truc.je voudrai changer le fond de chak cellule d'une JTable et mettre une couleur q je veu pour ch 2 JPanel superposées, mais pas de transparence ?! [ par CyberDenix ] Bonjour, Je créé une JFrame dans la quelle j'insere 2 JPanels contenant chacun une image .png (insertion de A, puis de B), chacun ayant un setOpaque (


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales