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 :

[JTextField]Pb d'affichage


Sujet :

AWT/Swing Java

  1. #1
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut [JTextField]Pb d'affichage
    Bonsoir tout le monde ,

    J'explique mon problème :

    Je rentre une valeur dans un champ JTextField . A la perte du focus si ma valeur est correcte je veux que celle ci change de couleur donc je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void focusLost (FocusEvent e) {
     
       // Traitement de la valeur (if valeur correcte ...)
     
      ((JTextField)e.getComponent()).setForeground(Color.GREEN.brighter());
     
      pan.repaint();
    }
    Mon problème est que celui ci passe en vert mais ne reste pas en vert . Qd je clique sur mon champ il passe vert et quelques fois ca beuge mais qd je quitte le champ pour passer sur un autre celui ci redevient noir .. ?

    Merci pour votre aide

  2. #2
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void focusLost (FocusEvent e) {
     
       // Traitement de la valeur (if valeur correcte ...)
     
      ((JTextField)e.getSource()).setForeground(Color.GREEN);
    }

  3. #3
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    J'ai tjrs le meme pb .
    En fait ma valeur reste bien mais celle-ci n'est pas dans la couleur que j'ai défini.
    Il faut que j'aille sur le champ pour le voir . Dès que je quitte le champ il redevient noir .

    Je mets mon 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
    class panneau extends JPanel {
     
        	public void paintComponent(Graphics g) { 
              // 1er type de champ
              g.setColor(Color.black);
       	  g.drawRect(i*60,j*60,60,60);
       	  tabsaisie[i+j*9] = new JTextField("",1);
       	  tabsaisie[i+j*9].setBounds(i*60+15,j*60+15,30,30);
       	  tabsaisie[i+j*9].setBorder(null);
       	  tabsaisie[i+j*9].addActionListener(Sudoku.this) ;
       	  tabsaisie[i+j*9].addFocusListener(Sudoku.this) ; 
       	  pan.add(tabsaisie[i+j*9]);
           }
    }
     
    public void focusLost (FocusEvent e) { 
     
           if (valeur == ok) 
             ((JTextField)e.getSource()).setForeground(Color.GREEN.brighter());
     
           pan.repaint();
    }

  4. #4
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setSelectedTextColor(Color c)

  5. #5
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Merci NeptuS et seiryujay

    J'ai revu mon code et cela fonctionne avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((JTextField)e.getSource()).setForeground(Color.GREEN.brighter());
    Par contre , a certains moments je fais afficher un autre panneau qui vient par dessus celui de mes JTextField . Mon autre panneau s'affiche sans pb mais dès que je le désactive , j'ai donc mon 1er panneau qui revient sans pb mais la couleur de mes JTextField redeviennent noirs .. ? Y'a t'il une manière de procéder pour qu'ils restent dans la couleur que j'ai défini?

  6. #6
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Ne fais pas ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g.setColor(Color.black);


    [EDIT]
    Euh, j'ai été un peu vite, j'ai peut-être dit une co******...

  7. #7
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    En fait, à chaque fois que tu fait un repaint(), tu reconstruis un nouveau champs texte, qui est donc réinitialisé avec les couleurs par défaut : noir.

    Tu ne dois pas instancier de composants dans la méthode paintComponent(), mais juste faire du dessin...

  8. #8
    Membre éclairé Avatar de Razgriz
    Profil pro
    Professeur / chercheur en informatique / mathématiques
    Inscrit en
    Avril 2006
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Professeur / chercheur en informatique / mathématiques

    Informations forums :
    Inscription : Avril 2006
    Messages : 391
    Par défaut
    ce que tu peux faire sinon c'est utiliser la méthode remove() sur ton JTextField, et ensuite rajouter un nouveau JTextField en vert, au même endroit, sous la même instance (récupère la veleur du composant dans lequel tu as ajouté le JTextField).

    Normalement ça devrait marcher, j'ai fait ça plusieurs fois... Ca marche mieux que le repaint, car en l'enlevant et en le réajouttant tu choisis tous les paramètres, contrairement au repaint() qui conne seiryujay l'a dit reprend tous les paramètres par défaut.

  9. #9
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Citation Envoyé par Razgriz
    contrairement au repaint() qui conne seiryujay l'a dit reprend tous les paramètres par défaut.
    Euh non, ce n'est pas repaint() qui reprend tout à zéro, c'est le fait qu'il reconstruise ses JTextField dans la méthode paintComponent() qui est elle-même appelée lors du repaint().

    Il faut sortir toutes les instanciations d'objets des méthodes de dessin et les placer dans le constructeur de ta classe.

  10. #10
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Merci

    En effet , en instanciant mes objets une seule fois ca marche mieux


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

Discussions similaires

  1. [JTextField] Probleme d'affichage
    Par fred33 dans le forum Composants
    Réponses: 2
    Dernier message: 18/08/2008, 15h24
  2. [JTextField] Problème d'affichage dans un champ ...
    Par mitje dans le forum Composants
    Réponses: 2
    Dernier message: 01/02/2006, 16h41
  3. [DEBUTANT] JTextField et affichage
    Par jfjava2002 dans le forum Composants
    Réponses: 4
    Dernier message: 09/12/2005, 11h56
  4. [débutant] [JTextPane] affichage similaire au JTextField
    Par Gougou dans le forum Composants
    Réponses: 4
    Dernier message: 31/08/2005, 06h25
  5. [JTextField][JDBC] Problème d'affichage
    Par deathwing dans le forum JDBC
    Réponses: 4
    Dernier message: 12/05/2004, 15h50

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