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

 Java Discussion :

[Débutant] Méthode getWidth


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    :-)
    Inscrit en
    Mars 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : :-)
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2014
    Messages : 194
    Par défaut [Débutant] Méthode getWidth
    Bjr,

    Premieremt je precise que le message est long MAIS je pense que la question est FACILE pour un amateur en JAVA(moi je ss debutant).

    Je suis un debutant en JAVA et j'essaye de m'entrainer,en creant ma propre animation,en un peu plus compliquer que ce qui est fait ds un tuto.La principale difference avec les exemples ds les chapitres du tuto, c'est que j'essaye de remplacer le cercle rouge par une image.

    Mais,j'ai une demande de creer une methode "getWidth();" ds ma classe Test01_panneau.

    Je pense avoir compris qu'on en a besoin pour definir qd la boucle "for" s'arrete(cad qu'on arrete des l'anim une foi que le "i" devient trop grd et depasse de l'ecran).

    Voici mes classes:

    classe Test01_Fenetre:

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
     
    package Test01;
     
    import java.awt.Component;
     
    import javax.swing.JFrame;
     
     
    public class Test01_Fenetre extends JFrame {
     
     
        public static void main(String[] args) {
                new Test01_Fenetre();
              }
     
     
     
        public Test01_Fenetre(){
     
            /*PARTIE I*/
            /*I/A/Creation d'une nouvelle fenetre*/
            JFrame fenetre=new JFrame();
     
            /*I/B/Apparence de la fenetre */
            fenetre.setTitle("Un petit jeux!");//nom
            fenetre.setSize(500, 500);//taille
            fenetre.setLocationRelativeTo(null);//positionnemt de la fenetre sur l'ecran.
            fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//definit qd le programme s'arrete
            fenetre.setVisible(true);//rendre visible la fenetre
     
            /*Partie II*/
            go_01();
     
        }
     
        private Test01_Panneau pan=new Test01_Panneau();
     
            /*Partie II*/
            /*I/A/Creation de la premiere fct d'animation*/
            private void go_01(){
                for (int i=-1500;i<pan.getWidth();i++){
                /*var;Permettent de recuperer les coordonnees de ou se trouve l'img*/
                    int x=pan.getPosX();
                    int y=pan.getPosY();
                /*on incremente*/
                    x++;
                    y++;
                /*On reinitialise les nouvelles positions de "x" et"y"*/
                    pan.setPosX(x);
                    pan.setPosY(y);
                try {
                Thread.sleep(100);//temps d'attente avant le declenchemt d'une nouvelle boucle
                } catch (InterruptedException e) {
                e.printStackTrace();
                      }
                }
            }
     
     
        }

    et voici la classe Test01_Panneau :

    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
    38
    39
    40
    41
    42
    43
    44
     
    package Test01;
     
    import java.awt.Dimension;
    import java.awt.Image;
    import java.io.File;
    import java.io.IOException;
     
    import javax.imageio.ImageIO;
     
    public class Test01_Panneau {
     
     
     
        /*II/A/*/
        private int posX=-1500;
        private int posY=-1500;
        /*II/B/la boule*/
        public void go_01(Image img01){
        try{
            img01=ImageIO.read(new File("ImgTest01.png"));
        }catch (IOException e) {
              e.printStackTrace();
            }               
        }
     
        /*III/A/Recuperation des donnees de la boule*/
        /*Recup des donnees X*/
        public int getPosX(){
            return posX;
        }
        /*Recup des donnees Y*/
        public int getPosY(){
            return posY;
        }
        /*III/B/Actualisation des donnees recuperees*/
        /*Pour X*/
        public void setPosX(int posX ){
            this.posX=posX;
        }
        /*Pour Y*/
        public void setPosY(int posY){
            this.posY=posY;
        }

    Donc voila commt creer une methode "getWidth()" qui connait automatiquemt la'abscisse max de la fenetre,et ce ci mm si on modifie la taille de cette derniere.

    REM:

    De plus j'ai remarque que mm si je mettais la largeur maximale de mon ecran en px la fenetre s'ouvrait correctemt etc...aucun probleme.Mais l'anim ne se lancait pas.


    Merci de votre aide.

    PS:J'ai laisse les commentaires mais,n'y faites pas attention.

  2. #2
    Membre éclairé
    Homme Profil pro
    :-)
    Inscrit en
    Mars 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : :-)
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2014
    Messages : 194
    Par défaut
    En resume:
    Voila ma question:

    "commt creer une methode "getWidth()" qui connait automatiquemt l'abscisse maximum de ma fenetre,et ce ci mm si on modifie la taille de cette derniere?"

    et je réécris ma remarque:

    "De plus j'ai remarque que mm si je mettais la largeur maximale de mon ecran en px la fenetre s'ouvrait correctemt etc...aucun probleme.Mais l'anim ne se lance pas."

    ->Tu vas me dire c'est normal car "i" c'est le nbre de tour de boucle et pas ton abscisse!Ouaip,alors ca entraine une deuxieme question comment donner a une variable que des coordonees d'abscisses.(si je ne me trompe pas)

    voila en esperant que ca vs aides a y voir plus clair.

    Je precise que j'ai DEJA cherche des solutions sur le net,et que j'ai essaye un tas de trucs,comme:"getSize.width..."etc.
    Et que je n'en peux plux de ce probleme qui me fait depuis hier

  3. #3
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    La méthode "getWidth" n'existe pas dans ta classe "Test01_Panneau". Ca, tu le sais déjà.
    Alors.... il suffit de l'ajouter !
    Pour faire simple, commence par ajouter la méthode : elle retourne une taille fixe, figée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public int getWidth()
    {
      return 500;
    }
    Dans un second temps, tu pourras voir comment obtenir la taille de l'image que tu lis. Mais au moins tu seras débloqué pour avancer sur le problème suivant
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  4. #4
    Membre éclairé
    Homme Profil pro
    :-)
    Inscrit en
    Mars 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : :-)
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2014
    Messages : 194
    Par défaut Refonte du prb
    Alors voila,
    Merci de ton conseil,mais ca marche tjrs pas j'ai donc decide de tt reprendre depuis le debut,et d'essayer de mettre une image de fond.Je vous montre mes classes.

    classe Test01_fenetre:
    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
    public class Test01_Fenetre extends JFrame {
     
     
        public static void main(String[] args) {
                new Test01_Fenetre(); 
              }
     
        private Test01_Panneau pan =new Test01_Panneau();
     
        public Test01_Fenetre(){
     
            /*PARTIE I:Creation d'une nouvelle fenetre*/
     
            /*I/A/Apparence de la fenetre */
            this.setTitle("Un petit jeux!");//nom
            this.setSize(500, 500);//taille
            this.setLocationRelativeTo(null);//positionnemt de la fenetre sur l'ecran.
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//definit qd le programme s'arrete
            this.setContentPane(pan);
            this.setVisible(true);//rendre visible la fenetre
     
        }
     
        }
    classe Test01_Panneau:
    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
    package Test01;
     
    import java.awt.Graphics;
    import java.awt.Image;
    import java.io.File;
    import java.io.IOException;
     
    import javax.imageio.ImageIO;
    import javax.swing.JPanel;
     
    public class Test01_Panneau extends JPanel {
     
    	  public void  imgFond(Graphics g){
    	    try {
    	      Image img = ImageIO.read(new File("Fond.jpg"));
    	      g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
    	    } catch (IOException e) {
    	      e.printStackTrace();
    	    }                
    	  }               
    	}
    Voila,si qqun peut m'aider je ne vois vraimt pas pk ca marche pas(d'ailleurs eclipse ne renvoit aucune erreur).
    1-Je cree une nouvelle fenetre.
    2-Je cree une nouvelle classe qui herite de JPlannel.Ds laquelle je cree une nouvelle methode me permettant ainsi de pouvoir ajouter des elemts(ici cette foutu img...)ds mon JFrame.
    3-J'appel ensuite cette methode par l'intermediaire de "setContentPane(pan);"(sur ce point j'ai fais un raccourci ds l'expliquation).

    Je pense qu'il vaudrait mieux que je cree un nouveau topic pour cette question mais comme il en existe bcp je sais pas trop quoi faire.
    Merci a tous.

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    La méthode imgFond n'est appelée nulle part : elle ne risque pas de s'exécuter. C'est la méthode paint(Graphics) qui est chargée de dessiner un JPanel : appelles donc imgFond dans paint(Graphics) en rédéfinissant cette méthode dans la classe Test01_Panneau.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par Pif_Paf_Pouf Voir le message
    Alors voila,
    Merci de ton conseil,mais ca marche tjrs pas j'ai donc decide de tt reprendre depuis le debut
    Un "ça ne marche pas" est inutile lorsque tu n'expliques pas pourquoi. Tout reprendre depuis le début n'a pas non plus de sens : tu devrais rester sur le problème initial.

    Voici un exemple qui fonctionne :
    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
     
    import javax.swing.JFrame;
     
    public class Test01_Fenetre extends JFrame
    {
    	public static void main( String[] args )
    	{
    		Test01_Fenetre fenetre = new Test01_Fenetre();
    		fenetre.run();
    	}
     
    	private Test01_Panneau panneau;
     
    	public Test01_Fenetre()
    	{
    		panneau = new Test01_Panneau();
    		this.setTitle( "le titre" );
    		this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    		this.getContentPane().add( panneau );
    		this.pack();
    		this.setVisible( true );
    	}
     
    	public void run()
    	{
    		for( int i = 0 ; i < 10000 ; ++i )
    		{
    			panneau.deplace();
    			try { Thread.sleep( 100 ); } catch( InterruptedException exc ) {}
    		}
    	}
    }
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
     
    import javax.imageio.ImageIO;
    import javax.swing.JPanel;
     
    public class Test01_Panneau extends JPanel
    {
    	private BufferedImage img;
    	private int x = 0;
    	private int sens = 10;
     
    	public Test01_Panneau()
    	{
    		try
    		{
    			img = ImageIO.read( new File( "fond_500_500.jpg" ) );
    		}
    		catch( IOException e )
    		{
    			e.printStackTrace();
    		}
    	}
     
    	public void deplace()
    	{
    		x += sens;
    		if( Math.abs( x ) >= img.getWidth() - 10 ) { sens *= -1; }
    		repaint();
    	}
     
    	@Override
    	public void paintComponent( Graphics g )
    	{
    		g.setColor( Color.white );
    		g.fillRect( 0, 0, getWidth(), getHeight() );
    		g.drawImage( img, x, 0, img.getWidth(), img.getHeight(), this );
    	}
     
    	@Override
    	public Dimension getPreferredSize()
    	{
    		return new Dimension( img.getWidth(), img.getHeight() );
    	}
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  7. #7
    Membre éclairé
    Homme Profil pro
    :-)
    Inscrit en
    Mars 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : :-)
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2014
    Messages : 194
    Par défaut merci
    Merci ,

    de ton aide et de tes message precis....
    Ton code marche super,le prb c'est que c'est toi qui l'a fait et pas moi .
    Non plus serieusemt je prefere y arriver par moi mm pour bien comprendre plutot que de copier-coller des codes d'internet.Je ne vais pas revenir poser cette question a chaque foi que j'ai un prb pour obtenir unnouveau code .
    Je vais suivre ton conseil et abandonner l'idee de "refonte de prb"(dommage qu'on ne puisse supprimer ses messages en passant).

    Et encore un grd merci pour votre aide les gars.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Méthode de Newton
    Par foujeu dans le forum MATLAB
    Réponses: 18
    Dernier message: 20/12/2006, 11h09
  2. [EJB] [débutant] [Méthode]EJB et présentation web
    Par Eric Berger dans le forum Java EE
    Réponses: 6
    Dernier message: 03/08/2006, 23h42
  3. [algoritmique][débutant]Méthode récursive
    Par lejimi dans le forum Langage
    Réponses: 7
    Dernier message: 16/01/2006, 19h54
  4. Réponses: 2
    Dernier message: 05/01/2006, 14h17
  5. [Débutant] Méthode super()
    Par KooX dans le forum Langage
    Réponses: 3
    Dernier message: 07/11/2004, 21h28

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