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

Agents de placement/Fenêtres Java Discussion :

Personnalisation d'un JMenuItem


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 78
    Par défaut Personnalisation d'un JMenuItem
    Bonjour,
    Je souhaite avoir dans un menu popup, un item qui soit composé de plusieurs éléments :
    - un jspinner contenant des entiers et avec un pas de 1
    - 2 boutons incrémentant/décrémentant le jspinner avec un pas de 5
    - une zone de texte
    (ces 3 composants sont mis dans un JPanel avec un BoxLayout).

    J'ai donc créé une classe qui "extends" JMenuItem et qui affiche bien le résultat mais ce résultat n'est pas organisé correctement :
    - Dans un JMenu, il y a une colonne à gauche où se mettent par exemple les jcheckboxmenuitem et jradiobuttonmenuitem, et dans la colonne de droite se met habituellement le libellé du jmenuitem.
    - Dans mon JMenu, le panel contenant les 3 composants est affiché dès la colonne de gauche et chevauche les 2 colonnes => ko

    J'ai essayé de trouver comment était organisé un JMenuItem (quel layout ? ...) afin de pouvoir positionner mon panel au bon endroit mais sans succès.


    Donc si quelqu'un a une idée, merci d'avance.

    Voici le code simplifié de ma classe :
    nb : dans cet example, je met un BorderLayout au JMenuItem car j'ai trouvé cette implémentation sur le net mais ça fait la même chose avec un autre layout.
    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
     
    private class JMenuItemPV extends JMenuItem {
    	private	JPanel				panel;
     
    	private	JSpinner			spPv;
    	private	NumberEditor 			edPv;
    	private	JButton				btPlus;
    	private	JButton				btMoins;
    	private JLabel				lbEtatSante;
     
    	public JMenuItemPV() {
    		super();
    		init();
    		affiche();
    	}
     
    	private void init() {
    		panel	= new JPanel();
    		BoxLayout bl = new BoxLayout(panel, BoxLayout.X_AXIS);
    		panel.setLayout(bl);
     
    		spPv			= new JSpinner();
    		edPv 			= new NumberEditor(spPv);
    		spPv.setEditor(edPv);
    		edPv.getModel().setMinimum(0);
    		edPv.getModel().setMaximum(50);
    		edPv.getModel().setStepSize(1);
    		edPv.getModel().setValue(25);
    		spPv.setBackground(Color.WHITE);
    		panel.add(spPv);
     
    		btMoins		= new JButton("-");
    		btMoins.setMargin(new Insets(1, 4, 1, 4));
    		btMoins.setAlignmentX(0);
    		panel.add(btMoins);
     
    		btPlus		= new JButton("+");
    		btPlus.setMargin(new Insets(1, 3, 1, 3));
    		btPlus.setAlignmentX(0);
    		panel.add(btPlus);
     
    		lbEtatSante		= new JLabel("Pleine santé");
    		lbEtatSante.setAlignmentX(1);
    		panel.add(lbEtatSante);
     
    		panel.setOpaque(false);
    	}
    	private void affiche() {
    		setLayout(new BorderLayout());
    		add(panel, BorderLayout.CENTER);
    		setBorder(null);
    	}
    	public Dimension getPreferredSize() {
    		return panel.getPreferredSize();
    	}
    }

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 78
    Par défaut
    Voici une copie d'écran du menu tel qu'il est actuellement (actuel.jpg) et la cible que je souhaite obtenir (cible.jpg)


    <EDIT>24/08 : J'ai retiré les pièces jointes car j'ai besoin de place pour en mettre d'autres sur un autre thread</EDIT>

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 78
    Par défaut
    Finalement j'ai trouvé un palliatif : j'ai créé un JLabel transparent (setOpaque(false) ) et avec une chaine de caractère " " assez longue pour que le champ suivant du BoxLayout commence dans la seconde colonne.
    Bon ce n'est pas une solution très "jolie" mais visuellement ça marche :-)
    Par contre si quelqu'un a une belle solution, je suis preneur (rien que pour apprendre).
    Bonne soirée

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

Discussions similaires

  1. [MFC] Comment personnaliser sa police de caractères ?
    Par Guybrush113 dans le forum MFC
    Réponses: 11
    Dernier message: 26/05/2004, 08h29
  2. [langage] personnaliser le tri
    Par schnecke dans le forum Langage
    Réponses: 3
    Dernier message: 24/03/2004, 16h14
  3. Personnaliser un rapport d'erreur sous Windows XP
    Par Neilos dans le forum Windows
    Réponses: 5
    Dernier message: 21/11/2003, 19h13
  4. [FLASH MX2004] Personnaliser les scrollbars
    Par stephane eyskens dans le forum Flash
    Réponses: 10
    Dernier message: 09/10/2003, 13h53
  5. [VB6] [UserControl] Évènements personnalisés
    Par Frankywinky dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/05/2003, 18h56

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