web-dev-qa-db-fra.com

JTextField setEnabled vs setEditable

Quelle est la différence entre JTextField.setEnabled() et JTextField.setEditable()? Dans mon code, j'ai une instance d'une classe héritée de JTextField. Mais quand j'ai défini sa propriété setEnabled(false) je peux toujours éditer et traiter son contenu dans mon programme. Cependant, lorsque j'ai défini sa propriété setEditable(false) je ne peux plus modifier son texte. S'il en est ainsi. Alors quel est le but de la propriété setEnabled() ici?

Mon code pour la classe héritée est:

 private static class CCField extends JTextField{
      private static final long serialVersionUID = 1L;
      public CCField() {
        this( DEFAULT_COLUMN_COUNT );
      }

      public CCField(final int cols) {
        super( cols );
 }

Added INFO Lorsque j'appelle la propriété setEnabled() de cette classe, elle n'affiche aucun effet sur le champ de texte et reste activée. J'ai un conteneur Jcomponent dans mon code qui a ce CCField comme composant enfant. Donc, quand j'essaie de le désactiver en utilisant setEnabled(false) il est toujours modifiable. Alors que lorsque j'essaie de le désactiver à l'aide de setEditable(false), il est désactivé. Voici comment j'accède à ce textField dans mon conteneur:

 JComponent jComp = DDEUtil.getComponent(icTableLayout,icDS);
 ((JTextField)jComp.getComponent(1)).setEditable(false);

Et ce qui se passe dans DDEUtil.getComponent Est trop complexe car il implique un certain nombre de classes et il n'est pas possible de poster ici.

Je me demande que je n'ai pas outrepassé aucune méthode de ce composant, alors pourquoi montre-t-il ce comportement.

10
Tariq

Dans mon cas, setEditable(false) grise le champ et setEnabled(false) ne grise pas le champ.

TextField est modifiable par défaut. Le code setEditable (false) rend le TextField non modifiable. Il est toujours sélectionnable et l'utilisateur peut copier des données à partir de celui-ci, mais l'utilisateur ne peut pas modifier directement le contenu de TextField.


Le code setEnabled (false), désactive ce TextField. Il n'est pas sélectionnable et l'utilisateur ne peut pas copier de données à partir de celui-ci et l'utilisateur ne peut pas modifier directement le contenu de TextField.


Liens utiles

  1. Comment utiliser les champs de texte
  2. Composant # setEnabled ()
25
ravibagul91

Alors que setEnabled(false) grise complètement le champ, setEditable(false) l'empêche juste d'être modifié, mais il restera toujours le même.

3
das_j