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

Java Discussion :

Avis aux Matheux: Problème plutôt Geométrique pour un PieMenu


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 24
    Par défaut Avis aux Matheux: Problème plutôt Geométrique pour un PieMenu
    Bonjour les amis,

    Je suis entrain d'implémenter un PieMenu.

    j'ai crée tout les éléments de base, a savoir la forme des Items, l'Item avec la gestion des évènements. Je suis donc en possession des classes suivantes:
    Item - ItemShape - ItemEvent - ItemListener

    Maintenant je commence à implémenter la classe PieMenu:
    J'ai à placer mes différents Item sur le contener de mon PieMenu qui est un JLayeredPane.

    je bloque sur le positionnement des Items, j'aimerais les placé de manière circulaire en fonction du centre du JLayerePane et du nombre des Items du menu.

    Ici la surcharge de la méthode setBounds:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    @Override
        public void setBounds(int x, int y, int width, int height) {
            float xC = x + width / 2f;
            float yC = y + height / 2f;
     
            super.setBounds(x, y, width, height);
            for (int i = 0; i < myNbElements; ++i) {
                myElements.get(i).setBounds(
                        (int) (xC + width / 2f * Math.cos(Math.toRadians(myStartAngle + i*(360/myNbElements)))+ xC),
                        (int) (yC - height / 2f * Math.sin(Math.toRadians(myStartAngle+ i*(360/myNbElements)))+ yC)
                        , 50, 50);
            }
        }
    comme vous pouvais vous en douté, le problème vient de cette partie du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    myElements.get(i).setBounds(
                        (int) (xC + width / 2f * Math.cos(Math.toRadians(myStartAngle + i*(360/myNbElements)))+ xC),
                        (int) (yC - height / 2f * Math.sin(Math.toRadians(myStartAngle+ i*(360/myNbElements)))+ yC)
                        , 50, 50);
            }
    merci d'avance pour vos indications

  2. #2
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 24
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    @Override
        public void setBounds(int x, int y, int width, int height) {
            float xC = width / 2f;
            float yC = height / 2f;
     
            super.setBounds(x, y, width, height);
            for (int i = 0; i < myNbElements; ++i) {
                myElements.get(i).setBounds(
                        (int)((width/2)+width/3*Math.cos(Math.toRadians(myStartAngle+(i*(360/myNbElements)))))-25,
                        (int)((height/2)+height/3*Math.sin(Math.toRadians(myStartAngle+(i*(360/myNbElements)))))-25,
                        50, 50);
            }
        }
    Merci tout de même.

    Je suis preneur d'autres solutions moins bourrin

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

Discussions similaires

  1. [Avis aux pros !] Problèmes de la VCL avec les threads
    Par benj63 dans le forum C++Builder
    Réponses: 3
    Dernier message: 17/02/2006, 22h38
  2. Problème unit CRT pour Faire du Pascal avec Delphi
    Par alexmorel dans le forum Débuter
    Réponses: 4
    Dernier message: 01/06/2004, 17h13
  3. Réponses: 5
    Dernier message: 27/08/2003, 11h45

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