PANEL ET BOUTON AVEC UN FOND EN IMAGE

cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004 - 24 mars 2004 à 08:17
omel1243 Messages postés 2 Date d'inscription dimanche 20 janvier 2008 Statut Membre Dernière intervention 31 octobre 2008 - 2 juin 2008 à 17:24
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/21361-panel-et-bouton-avec-un-fond-en-image

omel1243 Messages postés 2 Date d'inscription dimanche 20 janvier 2008 Statut Membre Dernière intervention 31 octobre 2008
2 juin 2008 à 17:24
waw!!
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
6 févr. 2006 à 17:53
trop trop cool ce code je mettrai bien 10/10 mais a chaque fois j'ai : "erreur dans la notation veuillez reessayer"
speedster130 Messages postés 6 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 20 avril 2004
20 avril 2004 à 10:02
Merci pour vos réponses.
Le problème que je recontrais était, en effet, lors de l'usage de la texuture...

Cette adresse crypte mon adresse mail.
En cliquant dessus, tu pourras m'envoyer un mail :
http://cerbermail.com/?jruzfeejwQ

Merci d'avance.
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
20 avril 2004 à 08:57
Les deux images ne disparaissent donc jamais :p

B@ron {EU.BELGIUM}
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
20 avril 2004 à 08:56
Heu j'ai essayé et j'ai:
- Le menu ne disparait jamais et il a bien l'image de fond
- La seule chose qui disparait c'est lorsqu'on utilise la texture alors le texte bonjour disparait puisque noir sur noir.

Je sais pas poster mes printScreen peut-être à une mail address???
J'ai juste changer la manière dont tu charges tes images...

B@ron {EU.BELGIUM}
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
20 avril 2004 à 07:33
Zé l'ai imprimé, je regarde ca ce soir.
PS: le code de reconnaissance vocale est terminé, le temps de le décrasser et vous pourrez commander votre ordinateur, le menus, ... via java :p

B@ron {EU.BELGIUM}
speedster130 Messages postés 6 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 20 avril 2004
19 avril 2004 à 22:34
Voici mon code :

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.MediaTracker;
import java.awt.Rectangle;
import java.awt.TexturePaint;
import java.awt.Toolkit;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;

public class TestBG extends JFrame{

private int mode;
private BufferedImage bufferedImage;

public static final int CENTRE = 0;
public static final int TEXTURE = 1;

public TestBG(int mode){
super("Test");
this.mode = mode;
this.bufferedImage = this.toBufferedImage(Toolkit.getDefaultToolkit().getImage("fond.jpg"));
JMenuBar jmb = new JMenuBar();
MonMenu menu = new MonMenu("Menu");
menu.add("menu item");
jmb.add(menu);setJMenuBar(jmb);
setContentPane(new MonPanel());
getContentPane().add(new MonButton("Bonjour"));
setSize(400,400);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);setVisible(true);
}
private class MonPanel extends JPanel{
private Image image;
public MonPanel(){
super();
}
public void paintComponent(Graphics g){
switch( mode ) {
case TEXTURE :
Graphics2D g2d = (Graphics2D)g;
g2d.setPaint(new TexturePaint(bufferedImage,new Rectangle(0, 0, bufferedImage.getWidth(), bufferedImage.getHeight())));
g2d.fillRect(0, 0, getWidth(), getHeight() );
break;
case CENTRE :
g.setColor(this.getBackground());
g.fillRect(0,0,getWidth(), getHeight() );
g.drawImage(bufferedImage,(getWidth()-bufferedImage.getWidth())/2,(getHeight()-bufferedImage.getHeight())/2,null);
break;
default :
super.paintComponents(g);
}
}
}
private class MonMenu extends JMenu{
private Image image;
public MonMenu(String str){
super(str);
setOpaque(false);
URL url = getClass().getResource("fond.jpg");
image = Toolkit.getDefaultToolkit().getImage(url);
MediaTracker tracker = new MediaTracker(this);
tracker.addImage(image,0);
try{tracker.waitForAll();}catch(Exception e){e.printStackTrace();}
}
public void paintComponent(Graphics g){
g.drawImage(image,0,0,this);
super.paintComponent(g);
}
}
private class MonButton extends JButton{
private Image image;
public MonButton(String str){
super(str);
setOpaque(false);
setBorderPainted(false);
URL url = getClass().getResource("btn.jpg");
image = Toolkit.getDefaultToolkit().getImage(url);
MediaTracker tracker = new MediaTracker(this);
tracker.addImage(image,0);
try{tracker.waitForAll();}catch(Exception e){e.printStackTrace();}
}
public void paintComponent(Graphics g){
g.drawImage(image,0,0,this);
super.paintComponent(g);
}
}
private BufferedImage toBufferedImage(Image image){
image = new ImageIcon(image).getImage();

BufferedImage bufferedImage = new BufferedImage( image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics g = bufferedImage.createGraphics();

g.setColor(Color.white);
g.fillRect(0, 0, image.getWidth(null), image.getHeight(null));
g.drawImage(image, 0, 0, null);
g.dispose();
return bufferedImage;
}
public static void main(String[] args){
new TestBG(TestBG.CENTRE);
new TestBG(TestBG.TEXTURE);
}
}

J'ai un menu qui contient une image de fond (centrée) et un panel qui contient une image de fond (mosaïque).
Mon problème est que si j'essaie d'appliquer ce procédé au menu (avoir une image repétée en mosaïque) alors dans ce cas le titre du menu disparaît.

Le mieux serait de tester ce code pour comprendre.
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
19 avril 2004 à 18:34
c symptomatic du melange de class AWT et Swing ca ;o)...
Faut pas melanger .. ;o)

++
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
19 avril 2004 à 07:22
Tu devrais poster ton code et cela ne prendrait que quelques minutes pour te trouver une soluce.

B@ron{EU.BELGIUM}
speedster130 Messages postés 6 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 20 avril 2004
19 avril 2004 à 02:11
Je me suis mal expliqué.
En fait, j'avais pris cet exemple et lorsque j'ajoutais un JMenu dans un JMenuBar et que j'essayais de cliquer sur le menu et bien à l'ouverture celui-ci était masqué par l'image en fond.

Si tu as un exemple complet, je suis preneur.
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
18 avril 2004 à 20:36
ben les jmenubar sont pas prevu pour recevoir des bouton ;o) mais des JMenu qui eu meme sont prevu pour recevoir des JMenuItem
ou checked ;o)

dc cela ne me choc pas tro que tu n y arrive pas ;o) mais now ca doit etre faisable qd meme ;o) (le veux tu vraiment?? )

;o)

++
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
18 avril 2004 à 15:26
Je ne sais pas si on peut ajouter un bouton à un menu.
Tu dois l'ajouter à un JToolBar je pense...

Sinon, je peux poster la création d'un menu complet si tu veux...

B@ron{EU.BELGIUM}
speedster130 Messages postés 6 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 20 avril 2004
16 avril 2004 à 20:32
J'ai essayé d'ajouter un JButton et aussi un JMenu dans un JMenuBar et les problèmes que je rencontre sont les suivants :
- le jbutton n'apparait paa
- lorsque je clique sur mon menu il est masqué

En gros, je n'arrive pas à ajouter de composants.
Comment je peux faire ?

J'ai aussi essayé d'utiliser setOpaque(false) mais ça n'a rien changé.
speedster130 Messages postés 6 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 20 avril 2004
16 avril 2004 à 20:32
J'ai essayé d'ajouter un JButton et aussi un JMenu dans un JMenuBar et les problèmes que je rencontre sont les suivants :
- le jbutton n'apparait paa
- lorsque je clique sur mon menu il est masqué

En gros, je n'arrive pas à ajouter de composants.
Comment je peux faire ?

J'ai aussi essayé d'utiliser setOpaque(false) mais ça n'a rien changé.
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
13 avril 2004 à 07:40
Quel projet de recherche?

B@ron {EU.BELGIUM}
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
11 avril 2004 à 14:37
;o) cool

mais pas facil a comprendre la fin du message ;o)
cs_lamane Messages postés 20 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 1 avril 2007
10 avril 2004 à 21:17
bon je me présente j travaile sur un projet de recherche en dévlepement LNGUAGE JAvA votre programme est pas male et je te salut car vous ete sur le von schemin
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
24 mars 2004 à 18:30
;o) ben vi te l avai deja di ca no!!?!! ;o)
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
24 mars 2004 à 10:19
j'ai trouvé voici le morceau manquant afin d'éviter que le fond du jtextfield devienne du brouillon tout noir:

rajouter la ligne: myJTextField.setOpaque(false);

B@ron {EU.BELGIUM}
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
24 mars 2004 à 08:45
Aie, je viens de tester ton application => OK

Cependant, essaie de mettre ceci (JTextField) dans ta fenetre et tu vas de suite comprendre mon problème...
Essaie en suite d'écrire dedans et de faire backSpace, etc...

...
btn.setText( "TOTO" );
JTextField field = new JTextField();
field.setBackground(new java.awt.Color(0,0,0,0));
pnl.add( field );
pnl.add( btn );
btn.setBounds( 50, 50, 100, 100 );
field.setBounds( 150, 150, 100, 100 );
...


B@ron {EU.BELGIUM}
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
24 mars 2004 à 08:17
Merci beaucoup, mais es-tu certain que quand j'écris dans un jtextfield transparent, le contenu ne va pas rester du brouillon?
Je vais essayer et je reviens...

B@ron {EU.BELGIUM}
Rejoignez-nous