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 :

Bug fenêtre


Sujet :

Java

  1. #1
    Membre régulier
    Homme Profil pro
    BTS IRIS
    Inscrit en
    Mai 2014
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : BTS IRIS
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 68
    Points : 87
    Points
    87
    Par défaut Bug fenêtre
    Bonjour, j'ai un bug dans mon programme. C'est un programme qui lorsque une fenêtre s'ouvre et que on souhaites passé à la prochaine application on appuis sur un bouton "NEXT" tous ce déroule bien jusqu'à ce que je ferme une Fenêtre et que je souhaites faire apparaître celle de ce 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
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    import java.awt.BorderLayout;
    import java.awt.Color; 
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    public class Fenetre3 extends JFrame{
      /**
             * 
             */
     
    	private static final long serialVersionUID = 1L;
     
    	private Pananimation pan2 = new Pananimation();
     
      private JButton btnnext2 = new JButton("mon bouton");
      private JPanel container2 = new JPanel();
     
      public Fenetre3(){
        this.setTitle("Animation");
        this.setSize(300, 300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);
        container2.setBackground(Color.white);
        container2.setLayout(new BorderLayout());
        container2.add(pan2, BorderLayout.CENTER);
        container2.add(btnnext2, BorderLayout.SOUTH);
        this.setContentPane(container2);
        this.setVisible(true);    
        go();
     
      }
     
      private void go(){  
        //Les coordonnées de départ de notre rond
        int x = pan2.getX(), y = pan2.getY();
        //Le booléen pour savoir si l'on recule ou non sur l'axe x
        boolean backX = false;
        //Le booléen pour savoir si l'on recule ou non sur l'axe y
        boolean backY = false;
     
        //Dans cet exemple, j'utilise une boucle while
        //Vous verrez qu'elle fonctionne très bien
        while(true){
          //Si la coordonnée x est inférieure à 1, on avance
          if(x < 1)backX = false;
          //Si la coordonnée x est supérieure à la taille du Panneau moins la taille du rond, on recule
          if(x > pan2.getWidth()-50)backX = true;
          //Idem pour l'axe y
          if(y < 1)backY = false;
          if(y > pan2.getHeight()-50)backY = true;
     
          //Si on avance, on incrémente la coordonnée
          if(!backX)
            pan2.setPosX(++x);
          //Sinon, on décrémente
          else
            pan2.setPosX(--x);
          //Idem pour l'axe Y
          if(!backY)
            pan2.setPosY(++y);
          else
            pan2.setPosY(--y);
     
          //On redessine notre Panneau
          pan2.repaint();
          //Comme on dit : la pause s'impose ! Ici, trois millièmes de seconde
          try {
            Thread.sleep(3);
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
        }    
      }
     
    }
    Qui ce complète par ce 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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    import java.awt.Color;
    import java.awt.Graphics;
    import javax.swing.JPanel;
     
    public class Pananimation extends JPanel {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 2876065227117465667L;
    	private int posX = -50;
    	private int posY = -50;
     
      public void paintComponent(Graphics g){
        //On choisit une couleur de fond pour le rectangle
        g.setColor(Color.white);
        //On le dessine de sorte qu'il occupe toute la surface
        g.fillRect(0, 0, this.getWidth(), this.getHeight());
        //On redéfinit une couleur pour le rond
        g.setColor(Color.green);
        //On le dessine aux coordonnées souhaitées
        g.fillOval(posX, posY, 50, 50);
      }
     
      public int getPosX() {
        return posX;
      }
     
      public void setPosX(int posX) {
        this.posX = posX;
      }
     
      public int getPosY() {
        return posY;
      }
     
      public void setPosY(int posY) {
        this.posY = posY;
      }
    }
    Cependant tant que j'invoque pas la Fenetre3 dans mon main mon application bug. Comment puis-je fais pour que mon application ne bug pas lorsque je fais appel a elle dans ma fenetre2 ?
    Je sais pas si j'ai su être vraiment claire... --'

  2. #2
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Non, pas tout à fait complètement clair, en ce qui me concerne, mais j'ai quand même compris qu'il y avait un bug, et qu'on ne savait pas lequel : donc difficile de répondre sans tester ton code et faire éventuellement de la divination. Donc sois effectivement plus clair et plus explicite.
    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.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2013
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2013
    Messages : 191
    Points : 472
    Points
    472
    Par défaut
    Personnellement je n'ai rien compris.
    Attention aux fautes de français qui trop nombreuses rendent vos explications illisibles.
    Attention aussi à faire des phrases simples. Par exemple, " C'est un programme qui lorsque" rend difficile la compréhension de votre problème.
    Je ne comprends pas ce que fait le programme.
    Il ouvre un fenêtre possédant un bouton NEXT.
    Lorsqu'on clique sur le bouton NEXT, la fenêtre lance une application. Quel application? Paint ? un autre .jar ?
    Paint possédant une interface graphique (par exemple), si le bouton NEXT lance Paint, une fenetre va s'ouvrir avec elle aussi un bouton NEXT ?
    Tout fonctionne mais lorsque l'on ferme une de ses fenêtres avec un bouton NEXT, et qu'on veut faire apparaître (comment ? je ne sais pas) une autre fenêtre, ça bug.
    Quel bug ? Y a t'il un rapport d'erreur ?

    Bref, c'est ce que j'arrive à interpréter à partir de votre post et je doute que ce soit ce que vous tentez de nous dire.

  4. #4
    Membre régulier
    Homme Profil pro
    BTS IRIS
    Inscrit en
    Mai 2014
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : BTS IRIS
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 68
    Points : 87
    Points
    87
    Par défaut
    Excusez-moi pour les fautes de français.
    Mon programme lance une fenêtre avec un petit jeu dessus, en bas de cette fenêtre il possède un bouton "NEXT" afin de pouvoir accéder au jeux suivants, qui est dans une classe. Mon programme possède 3 classes appeler fenêtre (fenetre1, fenetre2 et fenetre3).
    Par exemple dans ma classe fenetre1 si on click sur "NEXT" on va sur la fenetre2 et donc on change de "jeu".

    Cependant lorsque je veux passer à ma fenetre3 (celle dont j'ai mis le code), il n'y a pas moyens que celle-ci fonctionne en l'appelant grâce au bouton NEXT de la fenetre2 (sachant que c'est le même code que les autres). La fenetre reste blanche est impossible de la fermer.

    La fenetre3 fonctionne seulement si je fais Fenetre3 fen3 = new Fenetre3 dans mon main, mais elle s'affiche en même temps que ma première fenêtre ce que je ne souhaites pas.
    Est-ce que c'est parce que ma Fenetre3 possède une "animation" et quelle est obligé d'être appeler depuis le main ?

  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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Je comprends mieux comme çà : le problème vient de la boucle while(true) dans la méthode go(). Lorsque tu lances ta fenêtre depuis une mathode main(), tu lances cette boucle dans le thread main. Mais quand tu la lances cette fenêtre depuis un bouton, le thread qui exécute la boucle est l'EDT (Event Dispatch Thread) le thread de SWING, chargé du traitement de l'affichage et des évènements SWING. Donc, tu fais une boucle qui bloque l'affichage, d'où le fait d'avoir une fenêtre qui n'affiche rien et qui est figé. Il faut absolument que cette boucle soit exécuté dans un thread autre que l'EDT, pour ne pas bloquer l'affichage.
    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
    Membre régulier
    Homme Profil pro
    BTS IRIS
    Inscrit en
    Mai 2014
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : BTS IRIS
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 68
    Points : 87
    Points
    87
    Par défaut
    Je comprends bien ! Merci pour ta réponse et ta rapidité

  7. #7
    Membre régulier
    Homme Profil pro
    BTS IRIS
    Inscrit en
    Mai 2014
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : BTS IRIS
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 68
    Points : 87
    Points
    87
    Par défaut
    Excusez-moi de revenir mais j'ai chercher un peu sur internet, je ne sais pas trop comment faire... Pour ne pas l'utiliser avec l'EDT de swing ? Je dois utiliser différemment le booléan ?

  8. #8
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Il faut exécuter le code de la boucle dans un thread (s'il y a des actions concernant SWING dans cette boucle, les exécuter elles sur l'EDT).


    Voir

    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.

  9. #9
    Membre régulier
    Homme Profil pro
    BTS IRIS
    Inscrit en
    Mai 2014
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : BTS IRIS
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 68
    Points : 87
    Points
    87
    Par défaut
    Merci

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

Discussions similaires

  1. explorer.exe qui bug, fenêtre, menu et boutons non affichés
    Par oceanbigone dans le forum Windows XP
    Réponses: 12
    Dernier message: 09/12/2008, 22h50
  2. bug? fenêtre propriété devenu inaccessible
    Par philoeil dans le forum Access
    Réponses: 4
    Dernier message: 02/07/2007, 18h49
  3. [Bug] Événement OnDestroy dans fenêtre dynamique
    Par gregcat dans le forum Delphi
    Réponses: 8
    Dernier message: 05/02/2007, 16h04
  4. Réponses: 5
    Dernier message: 15/01/2007, 10h45
  5. bug avec fenêtre en fsStayOnTop et showModal
    Par Stef_D dans le forum Delphi
    Réponses: 5
    Dernier message: 20/06/2006, 12h01

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