Met a jout la petite etoile dans le title JFrame

Résolu
anasnas Messages postés 14 Date d'inscription lundi 27 juin 2011 Statut Membre Dernière intervention 5 juillet 2011 - 4 juil. 2011 à 14:22
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 5 juil. 2011 à 15:55
Bonjour,

Je voulais savoir s'il y a une fonction qui permet d'ajouter
la petite etoile qui indique que le Frame a ete modifie mais qu'il n'a pas ete enregistre depuis ses dernieres modifications

Merci d'avance
et bonne journée

20 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
5 juil. 2011 à 10:47
Je te conseil de créer une classe qui implémente ActionListener

public class ListenerEtoile implements ActionListener{
   private JFrame frameAModifier;
   private final char ETOILE = "*".charAt(0);

   public ListenerEtoile(JFrame f){
      frameAModifier=f;
   }

   public void actionPerformed(ActionEvent evt) {
      if(frameAModifier.getTitle()!=null 
         && frameAModifier.getTitle().length()>0
         && frameAModifier.getTitle()
               .charAt(frameAModifier.getTitle().kength()-1)!=ETOILE){
         frameAModifier.setTitle(frameAModifier.getTitle()+ETOILE);
      }
   }
}


Et ensuite, tu ajoutes le listener a tous tes textFields en passant la frame en parametre
3
anasnas Messages postés 14 Date d'inscription lundi 27 juin 2011 Statut Membre Dernière intervention 5 juillet 2011
5 juil. 2011 à 15:05
non

j'ai essayé ça et ça marche

class MyDocumentListener implements DocumentListener { 
   private JFrame frameAModifier;
   private final char ETOILE = "*".charAt(0);

   public MyDocumentListener(JFrame f){
      frameAModifier=f;
   }
  
    public void insertUpdate(DocumentEvent e) { 
    	if(frameAModifier.getTitle()!=null 
         && frameAModifier.getTitle().length()>0
         && frameAModifier.getTitle()
               .charAt(frameAModifier.getTitle().length()-1)!=ETOILE){
         frameAModifier.setTitle(frameAModifier.getTitle()+ETOILE);
    	}         
    } 
    public void removeUpdate(DocumentEvent e) { 
    	if(frameAModifier.getTitle()!=null 
         && frameAModifier.getTitle().length()>0
         && frameAModifier.getTitle()
               .charAt(frameAModifier.getTitle().length()-1)!=ETOILE){
         frameAModifier.setTitle(frameAModifier.getTitle()+ETOILE);
    	}         
    } 
    public void changedUpdate(DocumentEvent e) { 
        
    } 
}
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
4 juil. 2011 à 15:04
Non, cette méthode n'existe pas directement, tu es obligé de le coder par toi même.

Ce n'est pas très compliqué, il suffit d'ajouter une étoile au titre lorsque tu fais la première modif s'il n'en possède pas déjà une et de l'enlever si elle existe quand tu enregistres.
0
anasnas Messages postés 14 Date d'inscription lundi 27 juin 2011 Statut Membre Dernière intervention 5 juillet 2011
4 juil. 2011 à 15:12
Donc il faut que je met un Listener sur chanque composant de ma JFrame ??
c'est bcp!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
4 juil. 2011 à 16:35
Oui, mais, c'est un seul listener ajouté sur tous les composants.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
4 juil. 2011 à 16:36
Donc, ce n'est pas tant que ca.

On peu mettre plusieurs listeners sur un composant
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
5 juil. 2011 à 02:52
et en fait ;o) ... ce n ai meme pas sur les composant qu il te faut metre le listener ;o) mais plutot sur les data dans ton cas...

GodConan ;o)
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
5 juil. 2011 à 08:27
Pas forcément même si c'est ce qu'il y a de mieux, mais en mettant un listener sur tous les composants qui modifient les données, tu obtiendras le résultat souhaité (a peu près).

J'ai fait ca sur un éditeur de dessin, et c'est satisfaisant comme solution même si quand tu supprimes la modification, l'étoile reste, globalement, le comportement attendu est le bon.
0
anasnas Messages postés 14 Date d'inscription lundi 27 juin 2011 Statut Membre Dernière intervention 5 juillet 2011
5 juil. 2011 à 09:04
Bonjour,

Qu'est ce que vous me conseillez comme listner?

Est ce que je peux utiliser ça :

composant.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent evt) {
   .....   }
});
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
5 juil. 2011 à 09:39
Oui tu peux.

(Je ne vois pas ce qui te pose problème ?)
0
anasnas Messages postés 14 Date d'inscription lundi 27 juin 2011 Statut Membre Dernière intervention 5 juillet 2011
5 juil. 2011 à 09:45
les JTextField
est ce que le fait de supprimer un caractère dans leur contenu declenchera cette action ??
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
5 juil. 2011 à 10:04
Oui, c'est ca.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
5 juil. 2011 à 10:07
Tu as aussi AddInputMethodListener : http://download.oracle.com/javase/1.4.2/docs/api/java/awt/event/InputMethodListener.html

A essayer, teste et tu vas bien voir e qui fonctionne le mieux.
0
anasnas Messages postés 14 Date d'inscription lundi 27 juin 2011 Statut Membre Dernière intervention 5 juillet 2011
5 juil. 2011 à 11:23
Oui ça marche mais y a un petit souci
kan je modifie le textField il fo que je clique sur entrée pour que le listner soit declencher

!!!!
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
5 juil. 2011 à 11:25
Alors essayes les InputMethodListener
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
5 juil. 2011 à 11:28
Avec le même code à l'intérieur :

public class ListenerEtoile implements InputMethodListener {

   private JFrame frameAModifier;
   private final char ETOILE = "*".charAt(0);
  
   public ListenerEtoile(JFrame f){
      frameAModifier=f;
   }

   public void caretPositionChanged(InputMethodEvent event) {
   
   }

  public  void inputMethodTextChanged(InputMethodEvent event) {
     if(frameAModifier.getTitle()!=null 
         && frameAModifier.getTitle().length()>0
         && frameAModifier.getTitle()
               .charAt(frameAModifier.getTitle().kength()-1)!=ETOILE){
         frameAModifier.setTitle(frameAModifier.getTitle()+ETOILE);
      }

  }
}
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
5 juil. 2011 à 14:03
Alors, ca te convient ?
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
5 juil. 2011 à 14:41
Si ca marche, n'oublie pas d'accepter la réponse.

Merci
0
anasnas Messages postés 14 Date d'inscription lundi 27 juin 2011 Statut Membre Dernière intervention 5 juillet 2011
5 juil. 2011 à 15:07
Merci Julien39 pour ton aide
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
5 juil. 2011 à 15:55
De rien

Bonne continuation
0
Rejoignez-nous