Désactiver le JButton lorsque JTextField est vide – Java

JButton est une sous-classe de la classe AbstractButton et il peut être utilisé pour ajouter des boutons indépendants de la plate-forme dans une application Java Swing. JTextField est un composant qui permet de modifier une seule ligne de texte. Dans ce tutoriel nous allons découvrir comment désactiver JButton lorsque JTextField est vide en utilisant l’interface DocumentListener avec les méthodes removeUpdate(), insertUpdate() et changedUpdate() qui se déclenche lors de l’insertion, suppression, ou la modification du texte dans JTextField.
 
 


 

Exemple:
import javax.swing.*;
import javax.swing.event.*;

public class EnableBtn extends JPanel 
{
    private JTextField text = new JTextField(10);
    private JButton btn = new JButton("Bouton");

    public EnableBtn() {
        text.getDocument().addDocumentListener(new DocumentListener() {

            @Override
            public void removeUpdate(DocumentEvent e) {
                checkBtn();
            }

            @Override
            public void insertUpdate(DocumentEvent e) {
                checkBtn();
            }

            @Override
            public void changedUpdate(DocumentEvent e) {
                checkBtn();
            }
        });

        btn.setEnabled(false);

        add(text);
        add(btn);
    }

    private void checkBtn() {
        boolean value = !text.getText().trim().isEmpty();
        btn.setEnabled(value);
    }

    private static void createAndShowGui() {
        EnableBtn panel = new EnableBtn();
        JFrame f = new JFrame("Désactiver JButton");
        f.getContentPane().add(panel);
        f.pack();
        f.setLocationByPlatform(true);
        f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(()->createAndShowGui());
    }
}

Sortie:


 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *