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 :

JCheckBox disable - Couleur du texte


Sujet :

Composants Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Par défaut JCheckBox disable - Couleur du texte
    Bonjour,

    J'ai un composant JCheckBox, que je désire désactiver, par la méthode setEnable(false).
    Sur windows XP, en thème XP, le texte affiché reste en "normal". En thème classique, le texte est grisé (comme les JTextField ou autres composants).
    Y-a-t'il un moyen de forcer la couleur "grisée" du texte, puisque ce n'est pas un JLabel ?

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 13
    Par défaut
    Hello,
    J'ai eu un souci similaire. Il fallait que le texte de ma JCheckBox reste en noir même lorsque le composant est désactivé. J'ai essayé pas mal de trucs mais sans forcément rencontrer de succès(UIManager entre autre).

    La solution que j'ai trouvé est de réaliser une classe Héritant de JPanel et possédant une checkBox et un label(*je met checkbox et label sans les 'J' mais on parle des composant swing et non awt) et de redéfinir les méthodes souhaitées(getForeground dans le cas présent).
    Il faut également ajouter l'evenement qui permet de changer l'état de la checkbox sur le label.

    Ensuite, pour ne pas avoir a bidouiller le code généré par le Visual editor, j'ai rajouté une méthode remplaçant les JCheckBox existantes par les nouvelles "checkbox".

    voici les sources.
    Nouvelle CheckBox:
    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
    public class JActiveCheckBox extends JPanel {
     
    	private JCheckBox jCheckBox = null;
    	private JLabel jCheckBoxLabel = null;
    	 //  @jve:decl-index=0:
     
    	public JActiveCheckBox(JCheckBox checkBox,Container c)
    	{
    		initialize();
    		getJCheckBox().setName(checkBox.getName());
    		this.setBounds(checkBox.getBounds());
    		jCheckBoxLabel.setText(checkBox.getText());
    		this.setName(checkBox.getName());
    	}
     
    	/**
             * This method initializes this
             *
             */
    	private void initialize() {
            jCheckBoxLabel = new JLabel();
            jCheckBoxLabel.setText("JLabel");
            jCheckBoxLabel.setBounds(new Rectangle(26, 5, 127, 14));
            this.setLayout(null);
            this.setSize(new Dimension(166, 25));
            this.add(getJCheckBox());
            this.add(jCheckBoxLabel);
            jCheckBoxLabel.addMouseListener(new java.awt.event.MouseListener() {
    			public void mouseClicked(MouseEvent arg0) {
    				if(getJCheckBox().isEnabled())
    				{
    				getJCheckBox().setSelected(!getJCheckBox().isSelected());
    				}
    			}
     
    			public void mouseEntered(MouseEvent arg0) {
    				// TODO Auto-generated method stub
     
    			}
     
    			public void mouseExited(MouseEvent arg0) {
    				// TODO Auto-generated method stub
     
    			}
     
    			public void mousePressed(MouseEvent arg0) {
    				// TODO Auto-generated method stub
     
    			}
     
    			public void mouseReleased(MouseEvent arg0) {
    				// TODO Auto-generated method stub
     
    			}
    		});
    	}
    	@Override
    	public void setEnabled(boolean enable)
    	{
    		getJCheckBox().setEnabled(enable);
    	}
    	/**
             * This method initializes jCheckBox
             *
             * @return javax.swing.JCheckBox
             */
    	private JCheckBox getJCheckBox() {
    		if (jCheckBox == null) {
    			jCheckBox = new JCheckBox();
    			jCheckBox.setBounds(new Rectangle(3, 2, 21, 21));
    		}
    		return jCheckBox;
    	}
    	public boolean isSelected()
    	{
    		return getJCheckBox().isSelected();
    	}
    }  //  @jve:decl-index=0:visual-constraint="10,10"
    et dans mon interface graphique(a appeler dans initialize()) :
    Remplaceur:
    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
    private void replaceComponents(Container panel)
    	{
    		if(panel==null)
    		{
    			panel=getBackgroundPanel();
    		}
    		for(Component c:panel.getComponents())
    		{
    		if(c instanceof JCheckBox)
    			{
    			JCheckBox chk=(JCheckBox)c;
    			replaceCheckBoxes(chk,getDetailPanel());
    			}
    		if(c instanceof Container)
    		{
    			Container cont=(Container)c;
    			replaceComponents(cont);
    		}
    		}
    	}
    	private void replaceCheckBoxes(JCheckBox checkBox,Container panel)
    	{
    		panel.add(new JActiveCheckBox(checkBox,panel));
    		panel.remove(checkBox);
    	}
    Je ne sais pas si tu as trouvé solution a ton problème mais au pire ce sera utile a quelqu'un d'autre ^^.

    NB: si quelqu'un a une méthode plus "simple" je suis preneur

Discussions similaires

  1. Couleur du texte d'un select disabled
    Par dodane dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 11/05/2012, 11h33
  2. Input type disabled & couleur de texte
    Par jacquesprogram dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 11/12/2009, 13h44
  3. Couleur du texte d'un Edit Disabled
    Par wap010 dans le forum C++Builder
    Réponses: 2
    Dernier message: 29/12/2006, 14h13
  4. [disabled]Changer la couleur du texte
    Par ozzmax dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 18/01/2006, 21h09

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