begin process at 2012 02 14 09:50:48
  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 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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 : 1,154 sec (3)

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