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 :

Mise à jour du contenu d'une fenêtre sans le fermer puis la réouvrir


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 174
    Par défaut Mise à jour du contenu d'une fenêtre sans le fermer puis la réouvrir
    J'ouvre une fenêtre dans mon programme qui est codée de la façon suivante: En fait, les développeurs ajoute un objet histogramme et un objet bouton qui contient deux boutons. L'un deux permet de fermer la fenêtre en prenant en compte les modifications que l'on aura faite sur l'histogramme, le deuxième remet les paramètres de l'histogramme par défaut et ferme la fenêtre. Si on la réouvre, l'histogramme a repris sa "forme" d'origine.

    Je voudrais que le bouton annuler (celui qui restaure par défaut l'histogramme et ferme la fenêtre) ne ferme plus cette fenêtre mais permette de la rafraîchir.

    J'ai essayé de mettre this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); dans le WinowClosing ou dans le code de la fenêtre. Rien n'y fait.

    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    public class Fenetre extends JFrame implements WindowListener
    //public class Fenetre extends JFrame
    {
        private JPanel mainPanel;
        private Histogramme histo;
        private Bouton boutons;   
        private int largeur , hauteur;
        private JButton affinage;
        private Attribut attr;
      /*
       *constructeur
       *@param coord - coordonnees des differents points
       *@param borne - bornes des classes
       *@param x0 - position x0
       *@param y0 - position y0
       *@param x - position de la fin de l'abscisse
       *@param y - position de la fin de l'ordonnée
       *@param detailAttr - detail de l'attribut courant
       *@param typeGraphe - le type du graphe
       *@param largeur - taille de l'axe des abscisses
       *@param haut - taille de l'axe des ordonnées
       */
     
        public Fenetre(Vector coord,Vector borne,int x0,int y0,int x,int y,
                Attribut attrib,int larg , int haut , JButton affin)
        {
            super(System.getProperty("affinage.name"));
     
            mainPanel = new JPanel(new BorderLayout());
     
            //bouton affinage
            affinage=affin;
            affinage.setEnabled(false);
            attr = attrib;
            attr.setAffiche(true);
            //addWindowListener(this);
     
            largeur = larg;
            hauteur = haut;
     
            histo = new Histogramme(coord,borne,attrib,x0,y0,x,y);
            boutons = new Bouton(attr,affinage);
     
            JLabel histogramme = new JLabel("\n"+ System.getProperty("tborder.histogramme"));
            histogramme.setFont(new Font("arial",Font.BOLD,14));
            mainPanel.add(histogramme,BorderLayout.NORTH);
            mainPanel.add(histo,BorderLayout.CENTER);
            mainPanel.add(boutons,BorderLayout.EAST);
            setContentPane(mainPanel);
            setSize(largeur , hauteur);
            setVisible(true);
            this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
            repaint();   
        }
     
        public void windowClosing(WindowEvent e) {affinage.setEnabled(true);attr.setAffiche(false);}
        public void windowOpened(WindowEvent e) {}
        public void windowActivated(WindowEvent e) {}
        public void windowDeactivated(WindowEvent e) {}
        public void windowClosed(WindowEvent e) {this.setVisible(true);}
        public void windowIconified(WindowEvent e) {}
        public void windowDeiconified(WindowEvent e) {}
    }
    J'ai essayé de le placer dans le code du bouton:
     
        public void actionPerformed(ActionEvent e)
        {
            // Si on valide notre affinage
            if(e.getSource() == valider)
            {       
                valider();
            }
     
            /* Si on annule
            *  On remet tout à zéro
            */
            if(e.getSource()== annuler)
            {
                attr.setStatus(0);
                attr.aPreparer = true;
                attr.setPoints(new Vector());
                attr.setBornes(new Vector());
                attr.setBornesInitiales(new Vector());
     
                // Pour le bouton affinage
                attr.setAffiche(false);
                affinage.setEnabled(true);
     
                this.getTopLevelAncestor().setVisible(false);
     
                //this.getTopLevelAncestor().repaint();  
            }
        }
    ce qui me ferme ma fenêtre c'est this.getTopLevelAncestor().setVisible(false); mais si je le met à true, là ça ne la ferme plus mais ça ne réinitialise pas mon histogramme. J'ai pensé à une astuce: existe-t-il un code permettant de fermer puis réouvrir la fenêtre?

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 179
    Par défaut
    Citation Envoyé par skystef Voir le message
    ce qui me ferme ma fenêtre c'est this.getTopLevelAncestor().setVisible(false); mais si je le met à true, là ça ne la ferme plus mais ça ne réinitialise pas mon histogramme. J'ai pensé à une astuce: existe-t-il un code permettant de fermer puis réouvrir la fenêtre?
    Utilise les balises quand tu postes du code, sinon c'est illisible !

    Sinon, je pense que tu mélange le problème et sa solution. Fermer et réouvrir la fenêtre, c'est la solution que tu imagines (et qui à priori n'est pas la bonne), tu ferais mieux d'exposer le problème qui semble être : Comment rafraichir l'histogramme ?

    Fred.

  3. #3
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 174
    Par défaut
    Citation Envoyé par kwxyz Voir le message
    Utilise les balises quand tu postes du code, sinon c'est illisible !

    Sinon, je pense que tu mélange le problème et sa solution. Fermer et réouvrir la fenêtre, c'est la solution que tu imagines (et qui à priori n'est pas la bonne), tu ferais mieux d'exposer le problème qui semble être : Comment rafraichir l'histogramme ?

    Fred.
    Oui c'est exactement ça. Le problème, c'est que l'objet histogramme se trouve dans le code de ma fenetre (fenetre.java). Depuis le code du bouton annuler, je ne sais pas comment appliquer repaint() par exemple à mon histogramme... J'ai essayé :this.getTopLevelAncestor().repaint(); mais ça ne marche pas.

Discussions similaires

  1. Mise à jour le contenu d'une page jsp sans rafraîchir
    Par zilis dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 18/02/2014, 15h23
  2. Pb de mise à jour du contenu d'une fenêtre
    Par sepas dans le forum Agents de placement/Fenêtres
    Réponses: 12
    Dernier message: 05/09/2009, 15h01
  3. Réponses: 14
    Dernier message: 15/01/2009, 10h54
  4. Réponses: 3
    Dernier message: 19/07/2007, 16h46
  5. Réponses: 4
    Dernier message: 20/02/2007, 16h34

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