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

Interfaces Graphiques en Java Discussion :

Développez un programme Java "complexe"


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 123
    Points : 137
    Points
    137
    Par défaut Développez un programme Java "complexe"
    Bonjour à tous,

    Je viens vers vous car j’éprouve beaucoup de difficulté à trouver une solution à mon problème. Nous voudrions réaliser un programme complexe en java (c'est un langage que nous maîtrisons assez bien) mais nous avons du mal à trouver un framework adapté.
    Nous avons débuter avec SWING mais nous nous sommes rapidement trouvé bloqué à la limite de ces possibilités...

    Pour rendre le problème un peu plus simple, imaginons que j'ai des formes dans un cadre et que je souhaite pouvoir faire un drag & drop de ces formes dans un autre cadre et dans le 2e cadre, les déplacer, les redimensionner, effectuer des actions en faisant un clique gauche ou droit, gérer la profondeur, avoir un menu, etc.
    Nom : ProgrammeJavaExemple.png
Affichages : 1070
Taille : 68,3 Ko

    Inutile de préciser que le programme devra être bien plus complexe Il n'y aura pas 2 mais bien 3 ou 4 cadres, des popup, des menus différents selon les états demandés par l’utilisateur, etc. En d'autre termes, un bon gros programme de bureautique.

    Auriez-vous des idées à nous proposer de frameworks qui pourraient être adapté à ce que nous voulons faire ? Le programme serait une sorte de mélange entre Paint et Power point (sans la notion de slide) et tout en étant complétement différent !!! Le seule chose de similaire serait le drag & drop d'images, le rendu de formes complexes, la possibilité d'ajouter du texte et la gestion des profondeurs.

    D'avance un tout grand merci !

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Pour la partie drag and drop, je t'invite à lire les documentation à ce sujet, c'est géré en base en java, a toi de mettre dans le transfert objet les informations sur ce que tu drag.

    Pour la partie affichage,
    • tu peux partir de zéro: un jcanvas où tu gère toi même et tu dispatche tous les évènement,
    • partir de jgraph qui permet de placer des "composant" dans une graphe
    • partir de ygraph peut être, je ne suis pas sur qu'il fasse tout ce que tu veux
    • partir de batik, qui permet du dessin SVG et de rajouter de l'évenementiel sur les composant svg, ça peut te faciliter le dessin, mais ça nécessite du travail pour faire la partie menu / interface, boutons de contrôle.
    • peut être travailler avec javafx qui permet un lien entre propriété d'objets et composant graphique sans avoir à gérer la plomberie.

    Il y a surement d'autres possibilités que j'ignore.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 123
    Points : 137
    Points
    137
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Pour la partie drag and drop, je t'invite à lire les documentation à ce sujet, c'est géré en base en java, a toi de mettre dans le transfert objet les informations sur ce que tu drag.
    Oui, bien entendu...

    Citation Envoyé par tchize_ Voir le message
    • tu peux partir de zéro: un jcanvas où tu gère toi même et tu dispatche tous les évènement,
    Ca me semble un peu brutal comme solution mais c'est peut-être la seule...

    Citation Envoyé par tchize_ Voir le message
    • partir de jgraph qui permet de placer des "composant" dans une graphe
    • partir de ygraph peut être, je ne suis pas sur qu'il fasse tout ce que tu veux
    • partir de batik, qui permet du dessin SVG et de rajouter de l'évenementiel sur les composant svg, ça peut te faciliter le dessin, mais ça nécessite du travail pour faire la partie menu / interface, boutons de contrôle.
    Ok, mais comment gérer le redimensionnement ? La profondeur ? Et toutes les modifications qui seront apportées... Enfin, j'explorerai quand même tout ça mais je doute que cela réponde complétement à mes attentes

    Citation Envoyé par tchize_ Voir le message
    • peut être travailler avec javafx qui permet un lien entre propriété d'objets et composant graphique sans avoir à gérer la plomberie.
    Je vais commencer par regarder de ce côté. Ce n'est pas la première fois que j'entends parlé de javafx. Il faudrait que j'aille voir.

    Cependant, j'ai toujours entendu que des programmes comme OpenOffice, LibreOffice, Eclipse, etc. étaient codé en java. On ne va pas me faire croire que ça a été fait avec Swing ? Je me demande avec quoi ils peuvent bien travailler... Je vais également continuer un peu mes recherches.

    Merci pour ta réponse.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par VonDriguen Voir le message

    Ok, mais comment gérer le redimensionnement ? La profondeur ? Et toutes les modifications qui seront apportées... Enfin, j'explorerai quand même tout ça mais je doute que cela réponde complétement à mes attentes
    Ben c'est sur faudra regarder en détail ce que chaque outil fournis. JGraph permet de fournir des quasi composant swing à JGraph pour faire le dessin, donc à toi dans ton code de dessins de dessiner en fonction de niveau de zoom. Il fournis aussi déjà tout ce qui est handle pour manipuler tes nodes, donc ça ne devrais pas être bien compliqué de mettre des handle de redimensionnement.

    SVG étant verctoriel, du redimensionnement, rotation etc est très facile à faire.

    Pour la profondeur, je suppose que tu veux dire déterminer quel élément se dessine au dessus de l'autre? Faut regarder tes différentes api, c'est quand même un problème de base qui en général est déjà géré.

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par VonDriguen Voir le message
    Cependant, j'ai toujours entendu que des programmes comme OpenOffice, LibreOffice, Eclipse, etc. étaient codé en java. On ne va pas me faire croire que ça a été fait avec Swing ? Je me demande avec quoi ils peuvent bien travailler... Je vais également continuer un peu mes recherches.
    OpenOffice est codé en C++, je suppose que LibreOffice également

    Swing permet de faire pas mal de chose (si pas tout) mais c'est vrai qu'il y a beaucoup à faire...
    L'application est forcément un client lourd ?

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 123
    Points : 137
    Points
    137
    Par défaut
    Citation Envoyé par tchize_
    Ben c'est sur faudra regarder en détail ce que chaque outil fournis. JGraph permet de fournir des quasi composant swing à JGraph pour faire le dessin, donc à toi dans ton code de dessins de dessiner en fonction de niveau de zoom. Il fournis aussi déjà tout ce qui est handle pour manipuler tes nodes, donc ça ne devrais pas être bien compliqué de mettre des handle de redimensionnement.

    SVG étant verctoriel, du redimensionnement, rotation etc est très facile à faire.

    Pour la profondeur, je suppose que tu veux dire déterminer quel élément se dessine au dessus de l'autre? Faut regarder tes différentes api, c'est quand même un problème de base qui en général est déjà géré.
    Je regarde du côté de JavaFX et avec beaucoup de codage, je pense que c'est réalisable... Mais j'ai quand même l'impression qu'on va ré-inventer la roue pour beaucoup de méthodes et qu'il y a de nombreuses solutions qui existent déjà pour gérer de nombreux problèmes. J'ai peur que cela prenne au fur et à mesure une proportion non estimée qui explose les budgets.

    Citation Envoyé par OButterlin Voir le message
    OpenOffice est codé en C++, je suppose que LibreOffice également
    Bon, ok pour OO et libre office, au temps pour moi. Nommons éclise alors ^^
    Plus sérieusement, j'ai du mal a concevoir que de grosses applications de bureautique soient codées avec Swing.

    Citation Envoyé par OButterlin Voir le message
    L'application est forcément un client lourd ?
    Ca c'est THE question. Qu'entends-tu par lourd ? Comme il y aura du traitement d'image, cela dépendra des images que l'utilisateur importera... Je ne pense pas que le programme dépassera 250Mo (hors images importées) mais je n'ai aucune certitude. Nous sommes seulement au stade du chahier des charges et de l'analyse des besoins...

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    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 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Un framework SWING adapté pour afficher des formes (java.awt.Shape, entre autres) et les manipuler : Picollo2D (Voir des exemples aussi sur leur page d'origine, ou exécuter directement les exemples fournis avec le code, avec edu.umd.cs.piccolo.examples.ExempleRunner).

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par VonDriguen Voir le message
    Ca c'est THE question. Qu'entends-tu par lourd ? Comme il y aura du traitement d'image, cela dépendra des images que l'utilisateur importera... Je ne pense pas que le programme dépassera 250Mo (hors images importées) mais je n'ai aucune certitude. Nous sommes seulement au stade du chahier des charges et de l'analyse des besoins...
    J'entends par client lourd une application autonome (par opposition au client léger web)...
    Je ne connais pas exactement ce que fera l'application, mais de ce que tu as montré, ça passerait (à priori) avec du web (primefaces extensions) voir du html5 avec les canvas... mais bon, ce n'est qu'une estimation par rapport à ce que tu as décrit...

  9. #9
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Points : 4 792
    Points
    4 792
    Par défaut Témoignage
    Juste un témoignage de quelqu'un qui est passé par ce genre de recherche :

    J'ai fait un programme de planning industriel avec les contraintes de développement suivantes :
    - drag and drop de tâches comportant des images et du texte avec magnétisme sur une grille horaire
    - redimensionnement (pour définir la durée des tâches)
    - undo/redo
    - zoom particulier : il fallait des échelles multiples par heures / jours / semaines ...
    - impression avec mise en page spécifique
    - dispatch du planning par mail
    - droits d'accès
    - un système de persistance générique pour servir sur plusieurs types de base de données

    J'ai préféré m'en tenir à Swing car les bibliothèques que j'ai trouvées ne traitaient pas l'ensemble des contraintes.
    Par exemple, je voulais maîtriser le undo/redo de façon précise car il impacte la base de données
    ou encore les systèmes de zoom habituels ne fonctionnent pas avec un changement d'échelle temporelle.
    J'ai fini le planning en 3 mois.

    @VonDriguen : les demandes que tu exprimes ne sont pas du tout insurmontables en Swing qui te garanti la faisabilité dans tous les cas.
    Il te garanti aussi l'évolutivité de l'application en cas d'extension des spécifications.
    Par contre, il te faut bien maîtriser les design patterns pour aller directement aux bonnes pratiques (ex: pattern "command" pour undo/redo)

    Naturellement, si tu tombes sur une ou deux bibliothèques qui font exactement ce dont tu as besoin, il n'y a pas à hésiter.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 123
    Points : 137
    Points
    137
    Par défaut
    @OButterlin Alors oui c'est un client lourd. Pas de web.

    @joel.drigo Merci, je vais allez voir du côté de Picollo2D pour le traitement d'image

    @Népomucène Merci pour ton témoignage. Je connais très bien les patterns les plus utilisés de GoF. Mais je vais certainement devoir approfindir certains pour réaliser ce genre de projet. Mais tu m'as convincu. Je vais donc faire une liste vraiment précise de ce que je dois faire, bien analyser les grands points, me renseigner si je ne vois pas comment faire ou s'il n'existe pas une petite bibliothèque pour des points très précis et bien sûr, poser des questions plus précises sur ce forum si j'ai des problèmes particuliers avec Swing.

    Un grand merci à tous pour vos réponses.

    EDIT:
    Je vais plutôt utiliser JavaFX. En effet, j'ai lu ceci dans la FAQ d'Oracle:
    Is JavaFX replacing Swing as the new client UI library for Java SE?
    Yes. However, Swing will remain part of the Java SE specification for the foreseeable future, and therefore included in the JRE. While we recommend developers to leverage JavaFX APIs as much as possible when building new applications, it is possible to extend a Swing application with JavaFX, allowing for a smoother transition.

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Je rajoute
    Netbeans est codé avec swing, comme tu vois on peux y faire beaucoup de choses.
    Eclipse est codé avec swt.


    Si tu cherche un système qui gère déjà toute ta plomberie, autant eclipse que netbeans fournissent des frameworks d'application tout fait, tu n'a plus qu'à y poser tes propres composants:

    https://netbeans.org/features/platform/
    https://projects.eclipse.org/projects/eclipse.platform

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

Discussions similaires

  1. Java requête SQL quote antislash
    Par ritchie23 dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 01/10/2008, 16h50

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