Java Interface graphique pour un Arbre

Discussion dans 'Web, design' créé par BiBiO, 8 Novembre 2009.

  1. Offline
    BiBiO Elite
    Bonjour,

    J'aimerais représenter un Arbre (donc des noeuds et des arcs) de facon graphique avec Java.
    J'ai deja fait ma fenetre avec qq boutons avec java SWING. Mnt il ne me manque plus de faire la visualisation des noeuds et des arcs de mon arbre.
    Il y a moyen de représenter ca avec Jgraph? Dans ma fenetre deja créée, il suffira d'ajouter un Container avec la répresentation graphique ou c'est plus compliqué que cela?
    Je débute avec les interfaces graphiques :p

    Pouvez-vous m'expliquer comme faire ? Ou si vous avez un ptit tuto sympa:)

    Merci d'avance !
    BiBiO, 8 Novembre 2009
    #1
  2. Offline
    Skarbone I would rather be snowboarding
    a mon avis ca risque d'être plus compliqué que ca, du moins pour gérer correctement le positionnement des différentes feuilles et branches de ton arbre :/
    Skarbone, 12 Novembre 2009
    #2
  3. Offline
    KAMI spim spam spoum
    Faire un arbre c'est vraiment pas de la tarte... J'ai du en faire à l'unif suivant différents algorithmes et c'est simple à faire. Faut bien gérer la relation parents/fils, fils de gauche ou de droite ? Comment faire la lecture de l'arbre ? y a beaucoup de paramètres.

    j'ai un livre de référence la dessus si tu veux essayer d'aller le louer dans une bibli ou autre :

    Data structure & Algorithmes de Michael T.Goodrich et Roberto Tamassia
    KAMI, 13 Novembre 2009
    #3
  4. Offline
    BiBiO Elite
    Je voudrais créer un arbre dynamiquement en fait (il sera sauvegarder dans un vecteur).
    Pour l'instant j'ai mon interface graphique avec 3 boutons (Inserer, getmin/getmax et quitter)
    J'ai aussi mis dans mon container des Scrollbar a droite et en bas (Comme ca même si mon arbre a bcp de noeuds et qu'il depasse la fenetre, il suffira de jouer avec les ScrollBar..)

    Mais la j'ai un soucis pour insérer mon graph dans mon Container ... Si je dessine un bete noeud (drawOval), il se trouve en dessous du scroll bar horizontal... et non entre mes boutons et le scroll bar horizontal..

    Voici le probleme : (Heureusement que l'image ne se rafraichit pas tres vite quand je maximise la fenetre :p )
    [IMG]
    BiBiO, 16 Novembre 2009
    #4
  5. Offline
    Skarbone I would rather be snowboarding
    tu dois utiliser le layout pour ca me semble...
    Skarbone, 16 Novembre 2009
    #5
  6. Offline
    BiBiO Elite
    En fait mon graphe n'est pas dans le container (avec les boutons, scroll bar et tout )... Et je n'arrive pas à le mettre dedans ...
    Ce que je fais :

    Container contentPane = this.getContentPane();
    toolbar = new JPanel();
    contentPane.add(BorderLayout.NORTH, toolbar);
    // Puis j'ajoute tous les boutons ds toolbar

    //Scroll bar
    JScrollBar hbar = new JScrollBar(JScrollBar.HORIZONTAL, 30, 20, 0, 300);
    JScrollBar vbar = new JScrollBar(JScrollBar.VERTICAL, 30, 40, 0, 300);

    add(hbar, BorderLayout.SOUTH);
    add(vbar, BorderLayout.EAST);


    [...]

    public void paint( Graphics g ) {
    //paintComponent(g);
    g.drawOval (50,50,30,30);
    }

    Mais je ne sais pas vraiment comment rajouter le graphique dans ce container ... Pour qu'il commence juste en dessous de mes boutons...
    Ce qui est aussi bizarre, c'est qd je minimise la fenetre puis que je la remaximise, je visualise mon "oval" dans ma fenetre ....
    BiBiO, 19 Novembre 2009
    #6
  7. Offline
    AcidBird Touriste
    En même temps dans ton bout de code il manque l'essentiel, qu'est-ce que tu passes à ta fonction paint ???

    Je suis pas un expert mais d'après ce que j'avais lu à l'époque, un truc du genre devrait fonctionner :
    ....

    JPanel p;

    //Créer le panel et initialiser ton panel ou tout autre container

    contentPane.add(p, BorderLayout.Center);
    paint(p.getGraphics());
    AcidBird, 20 Novembre 2009
    #7
  8. Offline
    BiBiO Elite
    C'est ce que j'avais fait pourtant mais comme ca ne marchait pas je ne l'ai pas mis ici sur gamerz...
    Je vais réessayer et je vous tiens au courant ;)
    BiBiO, 20 Novembre 2009
    #8
  9. Offline
    BiBiO Elite
    Le p.getGraphics () me sort chaque fois une erreur de segmentation lors de l'execution...
    Exception in thread "main" java.lang.NullPointerException

    EDIT : En faisant un super.paint (g) dans ma méthode "void paint (...)" le rond ne s'affiche plus en dessous mais il n'est tjs pas dans le container car les scrollbar ne fonctionnent pas ...
    BiBiO, 21 Novembre 2009
    #9
  10. Offline
    Angy \o/
    C'est quand même de la vraie daube le GUI en java :-D
    Angy, 24 Novembre 2009
    #10
  11. Offline
    Tekura Elite
    pourquoi tu fais des jscrollbar... t'aurais peut etre plus facile ds un JScrollPane non?
    c'est un panel avec des scroll bar ;)

    Enfin j'ai pas ton code, mais moi a ta place j'aurai fais une classe qui extends JScrollPane et la tu redefinie la methode paintComponent().
    Tekura, 24 Novembre 2009
    #11
  12. Offline
    AcidBird Touriste
    A mon avis ca viendra une fois qu'il arrivera à dessiner sur son composant ça :)

    Ton exception est probablement dûe au faite que tu essaies d'accéder au graphics avant que ton composant ne soit visible. Je crois qu'il n'est assigné qu'à partir du moment ou ton composant est visible.
    AcidBird, 24 Novembre 2009
    #12
  13. Offline
    KAMI spim spam spoum
    Vive le C# :p Un bon vieux drag and drop et hop c'est bon :love:
    KAMI, 24 Novembre 2009
    #13
  14. Offline
    BiBiO Elite
    Merci pr vos réponses :).
    J'ai enfin compris comment marchait cette méthode paint ... (enfin pas encore tout mais plus ou moins :p). J'ai fait un classe Graphics extends JPanel puis je crée dans ma classe de départ un objet Graphics que j'ajoute au container :p. Enfin je suis sur que je ne vous apprends rien mais c'est au cas où des novices passe par ici :)
    BiBiO, 25 Novembre 2009
    #14