Partage
  • Partager sur Facebook
  • Partager sur Twitter

JtextField et Jbutton

Valider un Jbutton quand plusieurs JtextFields sont remplis

    15 mai 2018 à 13:58:41

    buttonVfei.setEnabled(false);// bouton grisé
    		
    		// PRODUCT NAME -----------------------------------------------------------------------------------------------
    		JLabel labelProductName = new JLabel("Product Name * ");		
    		labelProductName.setBounds(52, 117, 125, 13);
    		frame.getContentPane().add(labelProductName);
    		labelProductName.setForeground(Color.WHITE);
    		// textField product name
    		textFieldProductName = new JTextField("");
    		textFieldProductName.setBounds(197, 114, 129, 19);
    		textFieldProductName.setForeground(Color.decode("#212F3D"));
    		textFieldProductName.setColumns(10);
    		frame.getContentPane().add(textFieldProductName);
    		textFieldProductName.getDocument().addDocumentListener(new DocumentListener() 
    		{
    			
    			@Override
    			public void removeUpdate(DocumentEvent arg0) {
    				// TODO Auto-generated method stub				
    			}
    			
    			@Override
    			public void insertUpdate(DocumentEvent d) {
    			buttonVfei.setEnabled(d.toString().length() != 0);				
    			}			
    			@Override
    			public void changedUpdate(DocumentEvent arg0) {
    				// TODO Auto-generated method stub			
    			}
    		});


    Bonjour,

    Je développe ma première interface et je souhaite activer un bouton lorsque certains champs de saisie sont remplis. J'ai trouvé une methode pour dégrisé le bouton lorsqu'on insert au moins 1 caractère dans un champs de saisie.

    Mais comment fait-on pour dégriser le bouton et le rendre actif pour plusieurs JTextField ? Est-ce que quelqu'un a une methode ?

    Merci à l'avance.

    -
    Edité par ValerieCriton 15 mai 2018 à 14:04:01

    • Partager sur Facebook
    • Partager sur Twitter
      17 mai 2018 à 14:31:10

      Bonjour,

      Soit tu réécrit ta classe anonyme DocumentListener pour chaque JTextField -> Ça peut le faire s'il n'y en a que deux.

      Soit tu créer une classe interne (ou non) implémentant DocumentListener et définissant le comportement à adopter en cas d'insertion/suppression de caractère dans tes JTextField:

      import java.awt.BorderLayout;
      import java.awt.GridLayout;
      
      import javax.swing.JButton;
      import javax.swing.JFrame;
      import javax.swing.JPanel;
      import javax.swing.JTextField;
      import javax.swing.event.DocumentEvent;
      import javax.swing.event.DocumentListener;
      
      public class Fenetre extends JFrame {
      
      	private static final long serialVersionUID = 1L;
      	private JTextField champ1, champ2;
      	private JButton bouton;
      	
      	public Fenetre() {
      		//JFrame
      		setLocationRelativeTo(null);
      		setSize(300,150);
      		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      		
      		//Panneau principal
      		JPanel pan = new JPanel();
      		pan.setLayout(new GridLayout(2, 1));
      		getContentPane().add(pan, BorderLayout.CENTER);
      		
      		//Champ de saisie 1
      		champ1 = new JTextField("");
      		champ1.getDocument().addDocumentListener(new Listener());
      		pan.add(champ1);
      		
      		//Champ de saisie 2
      		champ2 = new JTextField("");
      		champ2.getDocument().addDocumentListener(new Listener());
      		pan.add(champ2);
      		
      		//Bouton
      		bouton = new JButton("Valider");
      		bouton.setEnabled(false);
      		getContentPane().add(bouton, BorderLayout.SOUTH);
      		
      		setVisible(true);
      	}
      	
      	//Implement d'un Document listener
      	private class Listener implements DocumentListener{
      
      		@Override
      		public void changedUpdate(DocumentEvent arg0) {}
      
      		@Override
      		public void insertUpdate(DocumentEvent arg0) {
      			verif();			
      		}
      
      		@Override
      		public void removeUpdate(DocumentEvent arg0) {
      			verif();
      		}
      		
      		//Méthode pour vérifier que les champs ne sont pas null
      		private void verif() {
      			if((!champ1.getText().isEmpty() && !champ2.getText().isEmpty())) {
      				bouton.setEnabled(true);
      			}else {
      				bouton.setEnabled(false);
      			}
      		}
      	}
      }
      



      • Partager sur Facebook
      • Partager sur Twitter
        23 mai 2018 à 10:09:03

        bonne idée pour la classe interne, merci !!
        • Partager sur Facebook
        • Partager sur Twitter

        JtextField et Jbutton

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown