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

Composants Java Discussion :

JTextField changer background


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Par défaut JTextField changer background
    Bonsoir,

    J'aimerais savoir si il existe un moyen de changer le background du JTtextextField en fonction de sa selection.

    Dans le cas où il y a plusieurs JTextfield par exemple, si je seletionne le premier, son background passe du gris à bleu.

    Ensuite quans je selectionne le second, le premier repasse en gris et le second en bleu.

    Si il y a une méthode toute faite, je ne la trouve pas,avec les Listeners, j'arrive pas trop à me débrouiller.Dernier recours(peut-être), en creeant soi-même le composant?

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Pas trop besoin de créer de composant, la fontionnalité que tu cherches n'existe pas brut de décoffrage dans le JTextField il te reste donc l'option des listeners et en particulier les FocusListeners

    Voilà ce que ça donne






    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
     
    public class TestFocusField extends JFrame {
        private JComponent separator1;
        private JLabel label1;
        private JTextField textField1;
        private JLabel label2;
        private JTextField textField2;
        private Color lightBlue = new Color(190,210,255);
     
        public TestFocusField() {
            initComponents();
        }
     
        private void initComponents() {
            DefaultComponentFactory compFactory = DefaultComponentFactory.getInstance();
            separator1 = compFactory.createSeparator("Test"); 
            label1 = new JLabel();
            textField1 = new JTextField();
            label2 = new JLabel();
            textField2 = new JTextField();
     
            CellConstraints cc = new CellConstraints();
     
            //======== this ========
            JPanel contentPane = (JPanel) getContentPane();
     
            //---- label1 ----
            label1.setText("textfield1"); //$NON-NLS-1$
     
            //---- label2 ----
            label2.setText("textfield2"); //$NON-NLS-1$
     
            //---- textField1 ----
            textField1.setBackground(Color.LIGHT_GRAY);
            textField1.addFocusListener(new FocusListener() {
     
                public void focusGained(FocusEvent arg0) {
                    textField1.setBackground(lightBlue);
     
                }
     
                public void focusLost(FocusEvent arg0) {
                    textField1.setBackground(Color.LIGHT_GRAY);
     
                }});
     
            //---- textField2 ----
            textField2.setBackground(Color.LIGHT_GRAY);
            textField2.addFocusListener(new FocusListener() {
     
                public void focusGained(FocusEvent arg0) {
                    textField2.setBackground(lightBlue);
     
                }
     
                public void focusLost(FocusEvent arg0) {
                    textField2.setBackground(Color.LIGHT_GRAY);
     
                }});
     
     
            PanelBuilder contentPaneBuilder = new PanelBuilder(new FormLayout(
                new ColumnSpec[] {
                    FormFactory.DEFAULT_COLSPEC,
                    FormFactory.LABEL_COMPONENT_GAP_COLSPEC,
                    new ColumnSpec(ColumnSpec.FILL, Sizes.DEFAULT, FormSpec.DEFAULT_GROW)
                },
                new RowSpec[] {
                    FormFactory.DEFAULT_ROWSPEC,
                    FormFactory.LINE_GAP_ROWSPEC,
                    FormFactory.DEFAULT_ROWSPEC,
                    FormFactory.LINE_GAP_ROWSPEC,
                    FormFactory.DEFAULT_ROWSPEC
                }), contentPane);
     
            contentPaneBuilder.add(separator1, cc.xywh(1, 1, 3, 1));
            contentPaneBuilder.add(label1,     cc.xy  (1, 3));
            contentPaneBuilder.add(textField1, cc.xy  (3, 3));
            contentPaneBuilder.add(label2,     cc.xy  (1, 5));
            contentPaneBuilder.add(textField2, cc.xy  (3, 5));
            pack();
            setLocationRelativeTo(getOwner());
        }
     
        public static void main(String[] args) {
            TestFocusField f = new TestFocusField();
            f.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
            f.setVisible(true);
        }
     
    }
    Voilà ce que ça peut donner, bon ensuite y'a pas mal de JGoodies, j'avait la flemme de tout faire à la main


    Bon ensuite tu peux faire plus propre avec un FocusListener plus générique dans ce style:

    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
     
    myTextField.addFocusListener(new FocusListener() {
     
                public void focusGained(FocusEvent arg0) {
                    Object c = arg0.getSource();
                    if(c instanceof JTextField) {
                         ((JTextField)c).setBackground(lightblue);
                    }
                }
     
                public void focusLost(FocusEvent arg0) {
                    Object c = arg0.getSource();
                     if(c instanceof JTextField) {
                         ((JTextField)c).setBackground(Color.LIGHT_GRAY);
                    }
     
                }
    });

  3. #3
    Membre éclairé Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Par défaut
    Rofl ok merci, même pas pensé au Focus..j'ai cherché partout, jusqu'au CaretListener...

    Bon je pense que ca vas fonctionner mais je mettrais "Résolu" aprés quand même.

    Merci bien

  4. #4
    Membre éclairé Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Par défaut
    Ok, nickel

    J'ai juste creer mon propre listener mais sinon c'est pareil:
    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
     
     
    public class listener_jtext implements FocusListener{
     
    	public listener_jtext(){
    	}
     
    	   public void focusGained(FocusEvent arg0) {
               Object c = arg0.getSource();
               if(c instanceof JTextField) {
                    ((JTextField)c).setBackground(Color.blue);
               }
           }
     
           public void focusLost(FocusEvent arg0) {
                Object c = arg0.getSource();
                if(c instanceof JTextField) {
                    ((JTextField)c).setBackground(Color.LIGHT_GRAY);
                }
     
          }
     
    }
    Comme çà aprés, il y a plus qu' à faire çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    listener_jtext listener = new listener_jtext();
     
    jnom.addFocusListener(listener);
    jprenom.addFocusListener(listener);
    jadresse.addFocusListener(listener);
    jcp.addFocusListener(listener);
    jvl.addFocusListener(listener);
    jem.addFocusListener(listener);
    jci.addFocusListener(listener);
    Si çà peut aider...

    En tout cas merci, bonne soirée.

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Par contre fais attention à tes choix de couleur, ça risque de ne pas être très lisible

    Quand tu mets de la couleur en background d'un texte préfère des tons pastel si tu écris en noir et des ton grisés et sombre si tu écris en blanc histoire que le contraste puisse faire lire aisément.

    Car la du noir sur du LIGHT_GRAY ou du BLUE c'est un peu fatiquant visuellement
    genre du 220,230,250 pour du bleu et du 225,225,225 pour du gris avec une écriture noire c'est tout aussi compréhensible et moins criard

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

Discussions similaires

  1. [FLASH 8] Changer background du css depuis flash
    Par jbidou88 dans le forum Flash
    Réponses: 4
    Dernier message: 04/04/2009, 14h52
  2. Changer background d'un page html chaque jour
    Par ant75 dans le forum Débuter
    Réponses: 3
    Dernier message: 28/04/2008, 11h32
  3. [jtextfield] changer valeur
    Par droussa dans le forum Composants
    Réponses: 1
    Dernier message: 18/06/2007, 14h20
  4. Réponses: 3
    Dernier message: 12/11/2006, 05h12

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