Mon fond cache mes bouton qui s'affcihe bizarement

niko29940242 Messages postés 112 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 7 novembre 2004 - 13 oct. 2004 à 12:40
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 - 16 oct. 2004 à 08:21
bonjour a tous
je crois que j'aurai du poster dans la categorie "au secours" mais tan pi
mon pb c'est que une classe extends Jframe qui a une image de fond. Ensuite l'utilisateur doit choisir une option grace a JMenu. cette option doit faire apparaitre un bouton que je place de la maniere suivante : Bouton.setBounds(10,10,20,20) par ex! mais il n'apparait pas et il est toujour caché par l'image de fond , de plus sataille et sa position ne sont pas du tout celle ke je desire

voila une partie de mon code :
--------------------------------------

mon actionPerfomed :

public void actionPerformed(ActionEvent evt)
{
if (evt.getSource()instanceof JMenuItem)
{
String ChoixOption = evt.getActionCommand();

if (ChoixOption.equals("1 joueur"))
{
UnJoueur un_joueur = new UnJoueur();
getContentPane().add((un_joueur));
}
}
}

***********************************

ma classe UnJoueur qui est apelé et qui devrait fauire afficher un JButton:

public class UnJoueur extends JPanel implements KeyListener
{
JButton Bouton;

public UnJoueur()
{

Bouton = new JButton("");
Bouton.setBounds(20,20,50,50);
Bouton.addKeyListener(this);
add(Bouton);

}

public void keyReleased(KeyEvent e) {} // rien a faire}
public void keyTyped(KeyEvent e){} // rien a faire}

public void keyPressed(KeyEvent evt)
{

if (evt.getKeyCode() == KeyEvent.VK_NUMPAD1)
Bouton.setBackground (Color.yellow);
}
}

********************************************

si kelkun pouvait me dire pkoi ca ne s'affiche pas pardessus l'image de fond et pkoi il ne semet pas a l'emplacement indiqué je lui en serai infiniment reconnaissant lol thx all

13 réponses

toffe12 Messages postés 53 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 23 septembre 2005 1
13 oct. 2004 à 14:01
salut,
pour l'image de fond il faut dans le paint d'abord dessiner l'image puis faire appel au super, comme cela tu dessine d'abord l'image puis tes boutons.

Pour le reste je ne sais pas trop j'utilise des gridbagconstrain
A+
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
13 oct. 2004 à 18:18
GodConan :clown)

le morceau de code que tu fourni ne ser a rien pour resoudre ton problem qui reside putot dans ta facon d afficher l image ..
et toffe12 a surment raison ;o)

++
0
niko29940242 Messages postés 112 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 7 novembre 2004
13 oct. 2004 à 22:30
ah ok bon bah alors je v t emontrer tout mon code et essaie d'etre indulgent parce ke je me suis mi au java il n'ya pas tres lontemps =]

/////////////////////////////////////////////////////////////////////////////////
class principale :
---------------------

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.Graphics;

public class Morpion extends JFrame implements ActionListener
{
JPanel pane = new JPanel ();
JMenuBar menubar;
JMenu menu2;
int nb_joueur;


JButton j1 = new JButton("joueur 1");
//**********************************************************


public Morpion()

{
setTitle("Morpion");

// demande de confirmation au cas ou on quitte le jeu
//ExitWindow exit = new ExitWindow ();
//addWindowListener(exit);

// utilisation d'un toolkit pour l'affichage
// d'une icone associée à la fenêtre
Toolkit tk = Toolkit.getDefaultToolkit();
Image JFrameIcon = tk.getImage("morpion.jpg");
setIconImage(JFrameIcon);

setBounds(300,200,550,500);

// ajout de l'image du morpion en fond
DessinPlato image = new DessinPlato ();
getContentPane().add((image));


// Ajout d'une barre de menus à la fenêtre
menubar = new JMenuBar();

// ajout de la fonction "Option" et"fond d'ecran" dans la barre du menu
menu2 = new JMenu("Options");

// creation des fonction "1 joueur", "2 joueur" ...
JMenuItem menu21 = new JMenuItem("1 joueur");
JMenuItem menu22 = new JMenuItem("2 joueurs");

// installation d'un écouteur d'action sur la fonction "1 joueur" et"2 joueur"
menu21.addActionListener(this);
menu22.addActionListener(this);

// ajout des fct "1 joueur", "2 joueurs" au menu player
menu2.add(menu21);
menu2.add(menu22);

// ajout des menus "Options" à la barre de menus
menubar.add(menu2);

// ajout du menu a la fenetre
setJMenuBar(menubar);

// setContentPane(panel); // j'enleve cette ligne de code qui empeche
//l'affichage de l'image de fond

// affichage de la fenetre
setVisible(true);

}

//***************************************************

public void actionPerformed(ActionEvent evt)
{
if (evt.getSource()instanceof JMenuItem)
{
String ChoixOption = evt.getActionCommand();
if (ChoixOption.equals("1 joueur"))
{
UnJoueur un_joueur = new UnJoueur();
getContentPane().add((un_joueur)); }
}
}


//***************************************************
public static void main(String[] args)
{
Morpion mp = new Morpion();
}
//***********************************************
}

////////////////////////////////////////////////////////////////////
la classe qui affiche l'image de fond
--------------------------------------------

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class DessinPlato extends JPanel
{

Image morpion2 = getToolkit().getImage("morpion.jpg");

public DessinPlato()
{
setOpaque( false );
}

public void paint(Graphics g)
{

g.drawImage( morpion2, 0, 0,550,500, this );
super.paint( g );
}
}

voila ya tout mon code en ajoutant la methode du precedent message, est ce ke tu peu me dire pkoi je ne peux pas afficher un JButton correstement ?
merci pour ton aide
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
14 oct. 2004 à 06:48
GodConan :clown)

a priorie je pense que c parceque ton bouton tu l ajoute a la frame alors qu il faudrai l ajouter a l instance de ton DessinPlato

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
niko29940242 Messages postés 112 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 7 novembre 2004
14 oct. 2004 à 13:29
j'ai essayer mais ca marche pas !
tu pourrai pas me montrer comment faire stp pour ke je puisse comprendre ?
thx
0
niko29940242 Messages postés 112 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 7 novembre 2004
14 oct. 2004 à 13:30
bah non en faitc'estbon mon JButton apparait bien sur l'image de fond merci de mavoir aidé
0
niko29940242 Messages postés 112 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 7 novembre 2004
14 oct. 2004 à 13:42
bah lol maintenant c autre ki va pas
je fe afficher un JBUtton et mon image de fond en meme temps kan un utilisateur clike sur une option du menu
alors tou aparait seulement si on agandi la fenetre parce ke sinon rien ne s'affiche
est ce ke tu sais pkoi ?
0
niko29940242 Messages postés 112 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 7 novembre 2004
14 oct. 2004 à 14:57
PS : mon code

class1
-------
if (ChoixOption.equals("1 joueur"))
{ DessinPlatoJ1 plato_1vsCPU = new DessinPlatoJ1 ();
getContentPane().add((plato_1vsCPU));
}

class DessinPlatoJ1
------------------------

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class DessinPlatoJ1 extends JPanel
{
JButton j1 = new JButton("J_1");
JButton cpu = new JButton("CPU");

public DessinPlatoJ1()
{
j1.setBounds(2,2,10,10);
add(j1);
add(cpu);
}
}

aidez moi svp je suis en train de m'arracher les cheveux !!!!!
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
14 oct. 2004 à 18:17
GodConan :clown)

essaye repaint() apres le add();
0
niko29940242 Messages postés 112 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 7 novembre 2004
14 oct. 2004 à 23:12
non ca marche pas g deja essayer
bon voici mon code tel qu'il est :

public class J1 extends JPanel
{

JButton j1 = new JButton("J_1");
JButton cpu = new JButton("CPU");

public void paint(Graphics g)
{

setBackground(Color.white);
j1.setBounds(2,2,10,10);
add(j1);
add(cpu);
repaint();

g.drawLine(185,80,222,80);
super.paint(g);
//repaint();

}
}

*********************
et voila les ligne de code que je me sers pour apeler la methode
J1
***********************

if (ChoixOption.equals("1 joueur"))
{
J1 un_joueur = new J1 ();
getContentPane().add(un_joueur);

}

*************************

vraiment la je c plus koi faire
ca bug a tout les coup
ca affiche les boutons J1 et cpu seulement si on agrandi la fenetre
et en plus le JButton cpu arete plus de clignoter si on clike dessus

si ta une idée, nimporte laquelle surtout n'hesite pas =]
thx

NiKo [==;;;;;;;;;;;>
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
15 oct. 2004 à 06:54
GodConan :clown)

deja fau jamai faire les add ds le paint ensuite le bouton CPU n a pas de location defini. et le repaint SURTOU PAS ds le paint ;o)

si ta pas resolu on vera ce soir pour une correction ;:o) la g pas le tps ... ;o)

GL

++
0
niko29940242 Messages postés 112 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 7 novembre 2004
15 oct. 2004 à 22:12
merci pour toutes ces petites precision je men souviendrai
mais la le probleme esttoujour present : les bouton ne sont pas placé ou je veux, etil apparaissen seulement si j'agrandi la fenetre.....bizarre!!!
je te remercie de me filer un coup de main !

NiKo [==;;;;;;;;;;;>
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
16 oct. 2004 à 08:21
GodConan :clown)

Honnetement le mieu c est que tu reprenne tout de Zero.
Essai quelque exemple du site (lit le code) avant de reprendre ton prog.

Ton prob reside surtout dans l utilisation correcte, de la methode "add" et de la surcharge de paint;
0
Rejoignez-nous