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

avec Java Discussion :

[débutant] Cherche à mettre deux titres en paramètre d'un constructeur.


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Points : 31
    Points
    31
    Par défaut [débutant] Cherche à mettre deux titres en paramètre d'un constructeur.
    Bonjour (ou bonsoir)
    J'ai ici un exercice que m'a donné mon professeur,
    et je n'arrive pas à trouver comment mettre deux titres dans un constructeur.

    L'exercice que je dois faire est le suivant.

    -Je dois écrire une classe Fenetre.java
    -faire un extends depuis la classe JFrame
    -créer un constructeur acceptant deux titres (String) en paramètre
    -Le constructeur doit créer et afficher une fenêtre de 200x200 et ayant comme titre le 1er paramètre. Définir également une méthode "void changeTitre()" qui ne prends aucun paramètre et qui permet de commuter d'un titre à l'autre à chaque appel.


    J'ai créer ma JFrame, j'ai tout fais, la faire apparaitre avec un titre n'est pas difficile, mais la variante de commuter d'un titre à l'autre, là je suis perdu.
    Je n'arrive pas à rentrer deux String dans les () de ma JFrame.
    Dois-je procéder différemment?

    Je vous remercie d'avance pour vos réponses

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Tu utilises une méthode setTitle(unTitre) en testant d'abord la valeur actuelle, un truc du genre : si mon titre vaut 'titre1' alors je mets 'titre2' sinon 'titre1'
    Où est le problème ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par CosaNostra Voir le message
    Je n'arrive pas à rentrer deux String dans les () de ma JFrame.
    Dois-je procéder différemment?
    Salut,
    si je comprends bien tu n'arrives pas à créer le constructeur avec 2 string en parametre?

    du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MaFenetre(String titre1, String titre2){
        //Initialisation de la fenetre
    }

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Tu utilises une méthode setTitle(unTitre) en testant d'abord la valeur actuelle, un truc du genre : si mon titre vaut 'titre1' alors je mets 'titre2' sinon 'titre1'
    Où est le problème ?
    OK mais ça le remplacera à chaque fois ?

    La première fois, c'est logique que ça m'affichera mon premier titre.
    Avec ta méthode c'est aussi logique qu'au deuxième appel ça m'affiche le deuxième titre, mais comment fait-il pour revenir au premier titre ?

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 565
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 565
    Points : 21 630
    Points
    21 630
    Par défaut
    Voilà ce que je te propose : tu crées une classe qui retient deux titres, et qui expose une fonction next() qui renvoie alternativement un titre puis l'autre et ainsi de suite.

    Puis tu utilises la classe en question pour changer le titre de ta fenêtre.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par Mr_LoOnY Voir le message
    Salut,
    si je comprends bien tu n'arrives pas à créer le constructeur avec 2 string en parametre?

    du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MaFenetre(String titre1, String titre2){
        //Initialisation de la fenetre
    }
    Je sais pas si je m'y prends mal ou quoi, mais soyez indulgent pour un débutant

    D abord je fais ma méthode Public static void main
    Ensuite j'ouvre les accolades et je crée une nouvelle JFrame
    comme suit :
    JFrame f1 = new JFrame ("1er titre");

    Et je n'arrive pas à insérer un second titre dans les parenthèses.
    Même en faisant (String titre1, String titre2)

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Voilà ce que je te propose : tu crées une classe qui retient deux titres, et qui expose une fonction next() qui renvoie alternativement un titre puis l'autre et ainsi de suite.

    Puis tu utilises la classe en question pour changer le titre de ta fenêtre.
    Désolé mais notre prof est exigeant il faut que l'énoncé soit parfaitement respecté
    Et comme on débute en Java, je pense pas qu'il a fait quelque chose avec un next() car on a pas encore vu, à mon avis il a fait quelque chose de beaucoup plus simple mais je ne vois pas comment ^^

  8. #8
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    le "plus simple" c'est de remplacer le code de la méthode next() la ou elle a besoin d'etre appelé
    Comme ca plus besoin de méthode next

  9. #9
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Citation Envoyé par CosaNostra Voir le message
    La première fois, c'est logique que ça m'affichera mon premier titre. Avec ta méthode c'est aussi logique qu'au deuxième appel ça m'affiche le deuxième titre, mais comment fait-il pour revenir au premier titre ?
    C'est une bascule. Quand c'est à 1, on met à 2, sinon on met à 1. C'est comme un bouton on/off. Le boolean est bien adapté.

    Toutes les méthodes qui t'ont été indiquée revienne au même et respectent l'énoncé que tu as indiqué.

    Voici un exemple :
    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
    public class Test {
     
    	public static void main(String[] args) {
    		Test test = new Test("titre 1", "titre 2");
    		test.toggleTitle();
    		test.toggleTitle();
    	}
     
    	private String t1;
    	private String t2;
    	private boolean toggle;
     
    	public Test(String t1, String t2) {
    		this.t1 = t1;
    		this.t2 = t2;
    		System.out.println("titre = " + this.t1);
    	}
     
    	public void toggleTitle() {
    		toggle = !toggle;
    		if (toggle) {
    			System.out.println("titre = " + this.t2);
    		} else {			
    			System.out.println("titre = " + this.t1);
    		}
    	}
     
    }
    On peut aussi ce passer de l'attribut boolean en testant la chaine de caractère du titre de la fenêtre (pas dans l'exemple que j'ai donné).

  10. #10
    Invité
    Invité(e)
    Par défaut
    Ah bah bravo Visiwi on avait tous bien fait attention à pas lui filer la réponse toute faite à son exercice XD

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par Mr_LoOnY Voir le message
    Ah bah bravo Visiwi on avait tous bien fait attention à pas lui filer la réponse toute faite à son exercice XD
    lol t'inquiètes pas je veux apprends et pas recopier des trucs tout fait.
    C'que je voulais c'était avoir un DEBUT de direction et pas la réponse toute faite. L'histoire de la bascule me parait être dans mes cordes,
    et je pense que c'est c'que mon prof veut.

    Je m'y met...
    Je vous retiens au courant dans quelques dizaines de minutes.

    Merci

  12. #12
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    Citation Envoyé par CosaNostra Voir le message
    L'histoire de la bascule me parait être dans mes cordes
    C'est pour apprendre la guitare ?
    Bon, Ok, je sors

  13. #13
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Citation Envoyé par CosaNostra Voir le message
    C'que je voulais c'était avoir un DEBUT de direction et pas la réponse toute faite.
    Toutes mes excuses, j'avais cru comprendre que le mécanisme t'échappait. Je me suis visiblement trompé.

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par visiwi Voir le message
    Toutes mes excuses, j'avais cru comprendre que le mécanisme t'échappait. Je me suis visiblement trompé.
    des fois aussi lol mais là j'aimerais essayer de le faire en regardant mes cours,
    mais merci quand même pour le mal que tu t'es donné à cacher le nom des varibles et des méthodes

    Mon souci est vraiment au niveau du constructeur.
    Je sais pas si c'est Eclipse qui me fait une spécialité ou si c'est moi
    qui comprends pas tout, mais voici le code que j'ai créé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	public static void main(String[] args) {
    		JFrame fenetre = new JFrame("titre 1", "titre 2");
    		fenetre.setSize(200,200);
    		fenetre.setResizable(true);
    		fenetre.setVisible(true);
    et éclipse m'affiche une erreur à la ligne qui commence par JFrame
    il me souligne en rouge les 2 paramètres du constructeur
    ("titre 1", "titre 2").

  15. #15
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Il n'existe pas de constructeur avec ces arguments pour le type JFrame.
    Cela ne vient donc pas d'Eclipse.
    Tu auras surement besoin de créer ton propre type de fenêtre qui accepte ces arguments.

  16. #16
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    reprenons depuis le debut
    -Je dois écrire une classe Fenetre.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Fenetre ...
    -faire un extends depuis la classe JFrame
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Fenetre extends JFrame
    -créer un constructeur acceptant deux titres (String) en paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Fenetre(String titre1, String titre2) {...}
    -Le constructeur doit créer et afficher une fenêtre de 200x200
    et ayant comme titre le 1er paramètre.
    Définir également une méthode "void changeTitre()" qui ne prends aucun paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void changeTitre() { ... }
    et qui permet de commuter d'un titre à l'autre à chaque appel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(titre1affiché) setTitle(titre2)
     else setTitle(titre1)

    Disons que mainentant que tout est prémaché, ca ne sera plus bien dur...

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Points : 31
    Points
    31
    Par défaut
    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.JFrame;
     
     
    public class Fenetre extends JFrame {
     
    	public static void main(String[] args) 
     
    	{
    		JFrame fenetre = new JFrame("1er titre");
    		fenetre.setSize(200,200);
    		fenetre.setResizable(true);
    		fenetre.setVisible(true);
     
     
    		String t1 = "titre 1";
    		String t2 = "titre 2";
    		boolean changeTitre;
     
    		public static void changeTitre() {
    			changeTitre = !changeTitre;
    			if (changeTitre) 
    			{
    				fenetre.setTitle(t1);
    			}
    			else
    			{
    				fenetre.setTitle(t2);
       }		
      }	
     }
    }
    Voici le code que j'ai réussi à pondre jusqu'à maintenant.
    Il est surement différent de celui qu'on m'a proposé plus haut
    ce qui est normal, je n'ai pas voulu le recopier.
    Je l'ai fait avec mes basiques connaissances.

    Mais j'ai un problème au niveau de ma méthode pour changer le titre
    il aime pas mon void, il le souligne en rouge

    et la troisième accolade avant la fin aussi me pose problème,
    or si je la supprime y a tout qui passe en rouge quasiment.

    Quelqu'un saurait m'aiguiller sur une piste concernant le void surtout, merci.

  18. #18
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    sort la méthode changerTitre de ton main ...
    tu ne peux pas définir une méthode dans une autre méthode.

    Au lieu de faire "new JFrame" fait "new Fenetre(titre1, titre2)"
    C'est a peu prés la meme chose car Fenetre herite de JFrame mais tu pourras faire un peu plus ce que tu veux dans le constructeur de Fenetre

    Sinon avance comme ca je préfère

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par Mobius Voir le message
    sort la méthode changerTitre de ton main ...
    tu ne peux pas définir une méthode dans une autre méthode.

    Au lieu de faire "new JFrame" fait "new Fenetre(titre1, titre2)"
    C'est a peu prés la meme chose car Fenetre herite de JFrame mais tu pourras faire un peu plus ce que tu veux dans le constructeur de Fenetre

    Sinon avance comme ca je préfère

    Voilà j'ai sorti ma méthode changeTitre de ma main (j'avais pas vu que j'avais fait ça ) et je l'ai mise un peu plus loin

    Mais j'arrive toujours pas à affecter 2 titres au constructeur,
    même en faisant comme tu dis.
    Et pourquoi faire new Fenetre ?
    Il ne sais pas ce qu'il doit instancier si je fais comme ça non ?

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Points : 31
    Points
    31
    Par défaut
    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
    32
    33
    34
    35
    36
    37
    import javax.swing.JFrame;
     
     
    public class Fenetre extends JFrame {
     
    	public static void main(String[] args) 
     
    	{
    		JFrame Fenetre = new JFrame(String t1, String t2);
    		Fenetre.setSize(200,200);
    		Fenetre.setResizable(true);
    		Fenetre.setVisible(true);
    	}
     
    	public Fenetre (String t1, String t2);
    	{
     
    	}
     
    		String t1 = "titre 1";
    		String t2 = "titre 2";
    		boolean changeTitre = true;
     
     
    		public void changeTitre() 
    		{	
    			changeTitre = !changeTitre;
    			if (changeTitre) 
    			{
    				Fenetre.setTitle(t1);
    			}
    			else
    			{
    				Fenetre.setTitle(t2);
    			}		
    		}	
     }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		JFrame Fenetre = new JFrame(String t1, String t2);
    J'ai un problème avec cette ligne, eclipse me dit qu'il ne veut pas les deux String...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Fenetre (String t1, String t2);
    a cette ligne il me dit qu'il a besoin d'un corps !

    et apparemment il aime pas mes Fenetre.setTitle...
    Vous pensez que c'est ma Majuscule à "Fenetre" qui fou la m**** ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Débutant, cherche à mettre en place sharepoint
    Par Berserk100 dans le forum Installation
    Réponses: 4
    Dernier message: 31/03/2011, 16h12
  2. [JpGraph] mettre un titre sur deux lignes ?
    Par [ZiP] dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 09/10/2010, 17h47
  3. Réponses: 5
    Dernier message: 11/02/2009, 09h23
  4. [Débutant] Union de deux tables
    Par nyarla01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 05/03/2004, 10h40
  5. Mettre deux postes en réseau
    Par asphp dans le forum Développement
    Réponses: 6
    Dernier message: 13/09/2003, 18h53

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