IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

JPanel & demarche!


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de clio671
    Profil pro
    Développeur Web
    Inscrit en
    Février 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2007
    Messages : 203
    Par défaut JPanel & demarche!
    Bonjour tt le monde,

    Bon, je sais ça reprend un peu le topic d'en dessous mais j'ai pas encore super saisi.
    Donc en fait j'ai décidé d'implanter 1 calculatrice à l'aide de différentes classes que je vais inclure ds mon JFrame principal(des objets) par ex un panneau chiffres, un panneau operateur...

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    import javax.swing.*;
     
     
    public class PanneauChiffres extends JPanel
    {
    	private JButton tabChiffres ;
    	private int i ;
     
    	public PanneauChiffres()
    	{
    		//JButton un = new JButton("1") ;
    		/*for (i = 0 ; i <= 9 ; i++ )
    			JButton tabChiffres = new JButton(i) ;          ----> PENSEZ A FAIRE DES BOUCLES*/   
    		JButton[] tabChiffres = new JButton[9];
    		JButton bb = null;
    		for(int i = 0 ; i < tabChiffres.length; i++){
    		     bb = new JButton("Bouton "+i);
    		     tabChiffres[i] = bb;
    		}
    	}	
     
     
     
    	/*JButton un = new JButton("1") ;
    	JButton un = new JButton("1") ;
    	JButton un = new JButton("1") ;
    	JButton un = new JButton("1") ;
    	JButton un = new JButton("1") ;
    	JButton un = new JButton("1") ;*/
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    import java.awt.*;
     
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
     
     
    public class Calculatrice 
    {
    	public static void main(String arg[])
    	{
    		JFrame fenetreCalculatrice = new JFrame("Calculatrice");
     
    		fenetreCalculatrice.setLocationRelativeTo(fenetreCalculatrice) ;
    		fenetreCalculatrice.setSize(400, 400) ;
     
    		Container container = fenetreCalculatrice.getContentPane() ;
    		container.setLayout(new GridLayout(0,2)) ;
    		container.add(new JButton("say ahah"/*PanneauChiffres()*/)) ;
     
    		container.add(new JButton("say ahah")) ;
    		PanneauChiffres panneauChiffres = new PanneauChiffres() ;
     
    		//fenetreCalculatrice.add(panneauChiffres) ;
     
    		fenetreCalculatrice.setVisible(true) ;
     
    	}
    }
    Mais mon prof me dit que je dois etendre chacune de mes classes (panneauChiffres...) avec JPANEL comme si c'était 1 imbrication de poupées russes mais je ne vois comment faire!
    Pouvez vous m'aidez avec quelques elmts de syntaxe svp?

    merci d'avance
    a +

  2. #2
    Membre confirmé Avatar de kerinel
    Profil pro
    Inscrit en
    Février 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 103
    Par défaut
    Salut,
    je ne vois pas ce que ton prof te demande de plus...
    "PanneauChiffre extends JPanel" signifie que ton PanneauChiffre hérite de JPanel, donc EST un JPanel avec des trucs en plus (ceux que tu vas rajouter). Tu peux appliquer à PanneauChiffre tout ce que tu peux appliquer à un JPanel, notamment les réglages de taille, de couleur etc...

    Attention dans ton code tu déclares:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private JButton tabChiffres;
    et dans ton constructeur tu refais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JButton[] tabChiffres= new JButton[9];
    donc en fait tu masques la variable d'instance tabChiffre qui est un JButton par une variable locale qui est un tableau de Jbutton.
    c'est certainement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private JButton[] tabChiffres;
    public PanneauChiffres()
    	{
    		tabChiffres = new JButton[9];
    ...
    que tu voulais faire.
    Il faut aussi ajouter tes boutons a ton PanneauChiffre, (disons sa partie JPanel) avec dans ta boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.add(tabChiffres[i]);
    (au passage tu n'es pas obligé de passer par JButton bb, tu peux faire directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabChiffres[i]=new JButton("Bouton "+i);
    Sinon sur la deuxième partie, le GridLayout ne me semble pas trop indiqué dans ce cas car les 2 composants auront la même taille (GridLayout est très sommaire). En plus il faut qu'il soit initialisé avec (1,2) sinon tu n'as pas de ligne. Par contre il sera super pour ranger tes boutons dans ton PanneauChiffre vu qu'ils auront tous la même taille.
    Calculatrice n'a absolument pas à hériter de JPanel (que ferait-elle de plus en tant que JPanel ?), éventuellement de JFrame mais cela ne respecterait pas trop le modèle MVC. Je pense que c'est mieux comme présenté. Calculatrice se chargera de récupérer les infos en provenance des boutons et de faire les calculs, la JFrame d'afficher le tout. A chacun son boulot
    Pour voir ton PanneauChiffre, il faut l'ajouter au ContentPane de ta fenêtre (a la place du deuxième bouton) sinon tu ne pourras pas le voir.

    Bon code,
    kerinel

  3. #3
    Membre éclairé
    Avatar de clio671
    Profil pro
    Développeur Web
    Inscrit en
    Février 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2007
    Messages : 203
    Par défaut
    Bonjour tt le monde,

    Alors voilà comment j'ai fait pour résoudre mon p'tit souci & répondre aux exigences du prof (1 solution parmi d'autres).
    Par ailleurs je n'ai pas à respecter le modéle MVC :

    - a chacunne de mes classes j'ai mis extends JPanel
    comme ça on va pouvoir faire des add(objets)
    sinon
    si on met pas ça il ns met que la methode add ne peut pas etre utilisé pr mon type X(e.g. EcranCalculatrice).
    Le JPanel équivaut à 1 panneau vide used pr la mise en page des composants à l'écran

    - puis aprés ds mon main :
    fenetreCalculatrice.setLayout(new GridLayout(0,1)) ;
    et je rajoute
    fenetreCalculatrice.add( new EcranCalculatrice()) ;

    voilà
    a+:

Discussions similaires

  1. marges de JPanel
    Par cmoulin dans le forum Agents de placement/Fenêtres
    Réponses: 10
    Dernier message: 10/05/2004, 15h21
  2. Pb scintillement-stabilité lors réaffichage de JPanel
    Par Pill_S dans le forum Composants
    Réponses: 5
    Dernier message: 28/04/2004, 14h03
  3. Listener sur un JPanel
    Par ptitelfe dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 27/03/2004, 13h14
  4. JPanel et Border
    Par titoine dans le forum Débuter
    Réponses: 3
    Dernier message: 22/04/2003, 15h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo