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 :

JCheckBoxMenuItem custom look and feel


Sujet :

Composants Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2013
    Messages : 95
    Points : 60
    Points
    60
    Par défaut JCheckBoxMenuItem custom look and feel
    Bonjour,

    Est-il possible de façilement changer la JCheckBox d'un JCheckBoxMenuItem avec une JCheckBox custom (héritant bien sûr de JCheckBox) ou est-on obligé de redessiner tout le composant JCheckBoxMenuItem ? J'ai vu que JCheckBoxMenuItem étend de AbstractButton donc j'ai peur que ce ne soit pas possible...

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    septembre 2009
    Messages
    12 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 12 400
    Points : 29 015
    Points
    29 015
    Billets dans le blog
    2
    Par défaut
    Salut,

    Ça dépend de ce que tu veux faire et de ce que tu définis comme "facilement".
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2013
    Messages : 95
    Points : 60
    Points
    60
    Par défaut
    J'ai déjà un type JCheckBoxCustom qui redéfinit juste le look and feel d'une JCheckBox (pas son comportement). Et je voudrais intégrer ce look and feel dans le JCheckBoxMenuItem.

    Par facilement j'entend un genre de JCheckBoxMenuItem.setCheckBox(new JCheckBoxCustom()) ou un JCheckBoxMenuItem.setCheckBoxUI(new JCheckBoxCustom().getUI()). Bon ces exemples n'existent pas, mais un truc dans le genre.

    Après je suis preneur de toutes autres solutions.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    septembre 2009
    Messages
    12 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 12 400
    Points : 29 015
    Points
    29 015
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Halo2550 Voir le message
    J'ai déjà un type JCheckBoxCustom qui redéfinit juste le look and feel d'une JCheckBox (pas son comportement).
    Ça me dit pas ce que ça fait... c'est juste changer le dessin de la checkbox ou ça fait autre chose ?
    Citation Envoyé par Halo2550 Voir le message
    Et je voudrais intégrer ce look and feel dans le JCheckBoxMenuItem.
    Dans ce cas, le code pour affecter le lnf est similaire. Il y'a juste la sélection du menu à gérer. Au lieu d'étendre BasicCheckboxUI/BasicButtonUI étendre BasicMenuItemUI/BasicCheckBoxMenuItemUI...

    Citation Envoyé par Halo2550 Voir le message
    Par facilement j'entend un genre de JCheckBoxMenuItem.setCheckBox(new JCheckBoxCustom()) ou un JCheckBoxMenuItem.setCheckBoxUI(new JCheckBoxCustom().getUI()). Bon ces exemples n'existent pas, mais un truc dans le genre.
    JCheckBoxMenuItem.setUI().

    Citation Envoyé par Halo2550 Voir le message
    Après je suis preneur de toutes autres solutions.
    Une solution plutôt simple juste pour avoir un dessin personnalisé de la case à cocher est de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    checkboxMenuItem.addActionListener(e->{
    			if ( checkboxMenuItem.isSelected() ) {
    				checkboxMenuItem.setIcon(checkedIcon);
    			}
    			else {
    				checkboxMenuItem.setIcon(uncheckedIcon);
    			}
    		});
    ça oblige juste à virer l'icône par défaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UIManager.getDefaults().put("CheckBoxMenuItem.checkIcon", new ImageIcon());
    Éventuellement faire une classe CustomCheckboxMenuItem.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2013
    Messages : 95
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par joel.drigo Voir le message

    JCheckBoxMenuItem.setUI().
    Oui mais ça ça me fait tout refaire, pas seulement la checkbox.

    Citation Envoyé par joel.drigo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UIManager.getDefaults().put("CheckBoxMenuItem.checkIcon", new ImageIcon());
    Au final j'ai prit cette solution en remplaçant new ImageIcon() par JCheckBoxCustom.getIcon() vu que je veux que ça s'applique à toute mon appli.

    Merci de ton aide.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    septembre 2009
    Messages
    12 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 12 400
    Points : 29 015
    Points
    29 015
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Halo2550 Voir le message

    Au final j'ai prit cette solution en remplaçant new ImageIcon() par JCheckBoxCustom.getIcon() vu que je veux que ça s'applique à toute mon appli.
    Quelque chose comme ça je suppose (je mets la solution si ça intéresse quelqu'un d'autre) :

    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
    public class Demo {
     
    	public static void main(String[] args) {
     
    		UIManager.getDefaults().put("CheckBoxMenuItem.checkIcon", new CheckBoxIcon());
     
    		JFrame frame = new JFrame("Démo");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		JMenuBar menuBar = new JMenuBar();
     
    		JMenu menu = new JMenu("Menu");
    		menuBar.add(menu);
    		JCheckBoxMenuItem checkboxMenuItem = new JCheckBoxMenuItem("Checkbox");
    		menu.add(checkboxMenuItem); 
     
    		frame.setJMenuBar(menuBar);
    		frame.setSize(400, 400);
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
    	}
     
    	public static class CheckBoxIcon implements Icon {
     
    		private static final Image CHECKED_ICON = Toolkit.getDefaultToolkit().getImage(CheckBoxIcon.class.getResource("checked_checkbox.png"));
    		private static final Image UNCHECKED_ICON = Toolkit.getDefaultToolkit().getImage(CheckBoxIcon.class.getResource("unchecked_checkbox.png"));
     
    		public void paintIcon(Component component, Graphics g, int x, int y) {
    			AbstractButton abstractButton = (AbstractButton) component;
    			ButtonModel buttonModel = abstractButton.getModel();
     
    			Image image = buttonModel.isSelected() ? CHECKED_ICON : UNCHECKED_ICON;
    			g.drawImage(image, 2, 2, 32, 32, component.getParent()); 
    		}
     
    		public int getIconWidth() {
    			return 34;
    		}
     
    		public int getIconHeight() {
    			return 34;
    		}
    	}
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. [debutant] SWT Look and feel
    Par debutant java dans le forum SWT/JFace
    Réponses: 11
    Dernier message: 23/02/2007, 10h30
  2. [Look and feel] Texte des JLabels en gras
    Par aliasjcdenton dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 26/01/2006, 11h49
  3. [look and feel] Ou les trouver ?
    Par olive.m dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 08/03/2004, 18h42
  4. Nouveau look and feel
    Par julian_ross dans le forum JBuilder
    Réponses: 6
    Dernier message: 16/12/2003, 15h55
  5. Jbuilder9 Look and feel de borland
    Par wsrudmen dans le forum JBuilder
    Réponses: 6
    Dernier message: 26/06/2003, 18h07

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