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 :

[Debutant] se lancer dans l'interface graphique avec java?


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre du Club Avatar de bambou
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 192
    Points : 69
    Points
    69
    Par défaut [Debutant] se lancer dans l'interface graphique avec java?
    bonjour,
    je suis completement noob avec les interfaces java, j'ai aucune base.

    Je souhaiterai faire des formulaires simples ( label, champs de saisi, listes en gros ).

    J'ai lu qu'il fallait pas trop compter sur les éditeurs visuels d'interfaces et j'ai du mal à trouver des tutos qui ne soit pas seulement j'affichage d'un label ou alors à l'opposé une interface qui fait le café.. vous me conseillez quoi pour apprendre (rapidement si possible ) à faire une petite interface pour un programme déjà réalisé ( le programme possede des données, l'interface doit permettre la saisie de données pour ajout supression...etc, un truc simple koi ) ?

    merci et bonne journée

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Pour ce qui est des RAD il y a quand même de quoi faire entre netbeans, JBuilder, les différents plugins eclipse, abeille form designer ou autre pour ce qui est des éditeurs visuels

    Mais bon apprendre en le faisant à la main te permettra de récupérer les bizarreries que sont capables de générer ces derniers de temps en temps(même si celà est rare)..........

    Pour apprendre l'utilité des composants je te recommande même de faire joujou avec un de ces éditeurs puis ensuie de mettre lesx mains dans le cambouis et de coder toi même en fonction de ce que tu as vu dans l'éditeur et de ta future grande amie la Javadoc
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Membre du Club Avatar de bambou
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 192
    Points : 69
    Points
    69
    Par défaut
    j'ai tester le plugin d'eclipse visual editor et netbeans, netbeans convient bien (jai pas trouvé comment changer le layout dans VE alors netbeans convient bien
    je vais suivre ton conseil et commencer par ça, regarder un peu le code que ça genere dans un premier temps, histoire de comprendre un peu le fonctionnement

    merci pour ta réponse

    ps : fan d'ez3kiel?

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    [HS]Pour EZ3kiel évidemment, j'aurais pas repompé les un tel graphisme au hasard [/HS]
    Sinon pour bien te familiariser avec les layouts, les deux essentiels (enfin les plus compliqués mais les plus flexible) sont le GridBagLayout et le layout utilisé par netbeans par défaut (Free Design ou swing-layout ou je ne sais encore pour son nom) et éventuellent le boxlatout et le border

    Ensuite il existe des layouts alternatifs qui peuvent également s'avérer utiles tel l'excellent FormLayout proposé par JGoodies
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Membre du Club Avatar de bambou
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 192
    Points : 69
    Points
    69
    Par défaut
    bah j'ai pas bien compris le coup des layout, j'ai juste vu que l'AbsoluteLayout de netbeans me permettait de placer mes vomposants la ou je voulais.
    Les autres ( et c'est la que j'ai pas compri) me forçent à disposer les composants d'une certaine façon ( sauf que noob comme je suis, j'arrive, en général, juste à les poser cote à cote, sur une ligne avec l'editeur de netbeans...).
    Si tu n'as pas vu le live versus tour d'ez3kiel, je te le conseil, il est vraiment excelent

  6. #6
    Membre actif Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 253
    Points
    253
    Par défaut
    Bonjour,

    une petite page qui m'avait bien aidé pour apprendre à gérer le GidBagLayout !

  7. #7
    Membre du Club Avatar de bambou
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 192
    Points : 69
    Points
    69
    Par défaut
    ah wééé, ça c'est bien!

    merci beaucoup!

  8. #8
    Membre confirmé
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Points : 630
    Points
    630
    Par défaut
    Citation Envoyé par xxaragornxx
    une petite page qui m'avait bien aidé pour apprendre à gérer le GidBagLayout !
    /voix grailleuse
    Ooohh! Le Précieeeeeeeeuuuux!...
    Glob
    What would you do if you were not afraid?

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  9. #9
    Membre actif Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 253
    Points
    253
    Par défaut
    Citation Envoyé par Glob
    /voix grailleuse
    Ooohh! Le Précieeeeeeeeuuuux!...
    Ils nous l'ont volé, sale petit hobbit!

  10. #10
    Membre du Club Avatar de bambou
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 192
    Points : 69
    Points
    69
    Par défaut
    bon bah ça marche pas trop mal, j'ai fait une petite interface pour tester mais je ne sais pas trop comment l'inserer dans mon code...

    le fonctionnement sans inteface fonctionnais comme ça :
    le programme faisait ses verification de démarage, importe ses sonnées,

    puis dans une boucle while, j'ai un petit menu qui s'affiche en cosole proposant à l'utilisateur différentes actions.

    lorsque l'utlisateur quite le menu ( sort de la boucle ) le programme se termine en faisant ses sauvegardes et s'arrete.

    comme vous l'aurais surement compris, je voudrait faire en sorte qu'a la place du menu en cosole se soit mon interface qui soit lancée...

    donc dans mon formulaire principal ( Nomé ClientAdmin ) j'ai un main qui qui fait ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    java.awt.EventQueue.invokeLater(new Runnable() {
    	           public void run() {
    	               ClientAdmin clt = new ClientAdmin();
    	               clt.setVisible(true);
    	           }
    du coup j'ai mis, et c'est surement un peu bourin, cette portion de code dans le main() de mon programme à la place de ma boucle while
    ça fonctionne, le formulaire est bien chargé mais aprés etre chargé le programme continu de s'executer ( il n'attend pas que l'interface soit fermée pour finir son travail, en l'occurence faire les sauvegarde et se fermer) et il s'arrete...

    donc je me demandais comment gerer ça, si je dois faire mes chargement de données et test de demarage lors du chargement du formulaire et les sauvegarde à la fermeture ou est-ce qu'il y a un moyen de mettre le programme en pause pendant que l'interface est executé puis qui recupere la main quand elle est fermée?

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Points : 92
    Points
    92
    Par défaut
    Salut Bambou,
    j'ai pas trés bien compris ce que tu veux faire et les problemes rencontrés,
    mais invokeLater me fais penser que tu veux lancer une tache ultime qui s'effectuera à la fin de l'interface et independamment d'elle aussi ...
    pour çà je pense que
    void addShutdownHook(Thread hook)
    //Registers a new virtual-machine shutdown hook.
    dans la classe Runtime fait trés bien l'affaire, il se lance dés la fermeture du programme...
    A+

  12. #12
    Membre actif Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Points : 288
    Points
    288
    Par défaut
    En fait tu peux mettre un écouteur de fenêtre qui est avertis lors de la fermeture de cette dernière, ainsi, à ce moment tu peux sauvegarder.

    ton écouteur doit implémeter l'interface WindowListener et dans la méthode void windowClosing(WindowEvent e) tu fais ce que tu as à faire. et pour finir tu dois faire un addWindowListener(monEcouteur) dans ta fenêtre.

  13. #13
    Membre du Club Avatar de bambou
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 192
    Points : 69
    Points
    69
    Par défaut
    merci pour ces réponses

    pour jcodeunpeu : (coucou! ça va depuis la derniere fois? )

    j'ai pas trés bien compris ce que tu veux faire et les problemes rencontrés
    Il commençait à se faire tard, c'était pas trés clair (sans parler des fautes d'orthographe)

    En fait j'ai deux classes :
    Une Classe ProgrammePrincipal, qui est un gros main()
    Une Classe ClientAdmin qui définie la fenetre principale de mon interface graphique.

    La classe Client Admin a été générée par netbeans et le code avec l'invokeLater était dans la méthode Main dans ma classe Client Admin.

    J'ai copié/collé (c'est surement la que c'est bourin) ce code dans le main() la classe ProgrammePrincipal, entre mes opérations d'acquisition des données et de sauvegarde des données.

    Sauf que si je fait ça, le programme se lance, importe ses données, lance l'interface graphique, exporte les données et s'arrete en laissant l'interfa ce graphique toute seule.

    Alors que je souhaiterai que le programme se lance, importe ses données, lance l'interface graphique mais attende que la fenetre principale de l'interface graphique soit fermée pour finir l'execution par l'exportation des données.

    Pour cela je me suis dis qu'il y avait deux moyens, soit il y a une méthode qui me permet de mettre mon programme principal en pause tant que l'interface graphique est active.

    Soit je supprime mon programme principal et je créer des méthodes pour l'inialisation et la fermeture du programme que j'integre à la classe ClientAdmin (le formulaire principal) qui seront appelées à l'ouverture et à la fermeture du formulaire...

    voila le topo, j'espere avoir été plus clair..

    Citation:

    void addShutdownHook(Thread hook)
    //Registers a new virtual-machine shutdown hook.

    dans la classe Runtime fait trés bien l'affaire, il se lance dés la fermeture du programme...
    vi ça pourrait convenir mais je ne comprend pas bien comment l'utiliser..j'ai regardé la javadoc, qui en gros, si j'ai bien compris (l'anglais...huumm voila quoi ) il me disent à peu prés comme toi à savoir que le code contenu dans cette methode sera éxécuté à la fermeture du programme.

    Donc si je l'utilise dans mon programme principale, est-ce que ça ne va pas faire la meme chose que maintenant, l'interface graphique va etre lancée mais le programme va continuer à s"excuter et se finir, donc appeler cette méthode et au final faire pareil.

    Et si j'utilise cette methode dans la classe ClientAdmin, je ne vois plus trop l'interet, vu que je pourrait executer le code de fermeture du programme par exemple à la fermeture du formulaire principal...

    Pour ta réponse aDamas :
    tu peux mettre un écouteur de fenêtre qui est avertis lors de la fermeture de cette dernière
    ça me parait etre une bonne idée aussi, mais pareil, je ne vois pas trop comment gérer ça..
    dans la méthode void windowClosing(WindowEvent e) tu fais ce que tu as à faire. et pour finir tu dois faire un addWindowListener(monEcouteur) dans ta fenêtre.
    donc l'ecouteur est déclaré dans la classe ClientAdmin (form principal) du coup comment je fais dans ma classe programme principal pour récupérer les evenements?

    encore merci pour toute votre aide à tous

  14. #14
    Membre actif Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Points : 288
    Points
    288
    Par défaut
    Les écouteur peuvent être n'importe quel objet, même ton objet ClientAdmin si tu le souhaite (Qui s'écoute alors lui-même).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class ClientAdmin extends JFrame implements WindowListener
    {
    }
    Ta classe ClientAdmin devra alors implémenter les méthodes :

    void windowActivated(WindowEvent e)
    void windowClosed(WindowEvent e)
    void windowClosing(WindowEvent e) // celle ci nous interresse
    void windowDeactivated(WindowEvent e)
    void windowDeiconified(WindowEvent e)
    void windowIconified(WindowEvent e)
    void windowOpened(WindowEvent e)

    Dans la méthode windowClosing() tu fais ta sauvegarde.

    Et dans le constructeur de ClientAdmin tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public ClientAdmin (...)
     {
    ...
     addWindowListener(this);
    ...
     }
    Je suppose que tu as déjà un objet qui s'occupe de sauvegarder tes options, tu n'as qu'a le passer dans le constructeur de ClientAdmin et le mettre en attribut pour le récupérer dans windowClosing().

    En fait c'est simple et propre.

    Ca peut t'aider :
    http://java.sun.com/j2se/1.5.0/docs/...wListener.html

    Bonne soirée.

  15. #15
    Membre du Club Avatar de bambou
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 192
    Points : 69
    Points
    69
    Par défaut
    aah d'accord, ok donc c'est bien ça il faut que je fasse migrer le code de mon programme principale vers la classe de mon interface graphique..?

    et donc que mes import/export de données soit gérer sur l'ouverture et la fermeture de mon formulaire pricipale.

    dakodak, je vais tester ça

    merci

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Points : 92
    Points
    92
    Par défaut
    re bambou,
    pour le ShutDown voici un exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Runtime r = Runtime.getRuntime();
    r.addShutdownHook(new Thread(new Runnable() {
      public void run() {
        /* ton traitement de fin de programme **/
      }
    }));
    pour l'attente d'un resultat dans le programme principal (la fin de l'interface graphique) et ce qui concerne les threads, un truc qui décoiffe,
    j' en suit encore tout chose :
    http://www.developpez.net/forums/viewtopic.php?t=426674

    A++

  17. #17
    Membre actif Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Points : 288
    Points
    288
    Par défaut
    il faut que je fasse migrer le code de mon programme principale vers la classe de mon interface graphique..?
    Non, je crois pas que ce soit nécessaire, tu passe juste une référence à l'objet qui s'occupe des imports/exports dans le constructeur de ta fenêtre. Comme ça tu peux l'appeler depuis ta fenêtre.

  18. #18
    Membre du Club Avatar de bambou
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 192
    Points : 69
    Points
    69
    Par défaut
    donc du coup, j'ai opté pour la solution "implement WindowListener" et ça fonctionne bien...

    cela dit, au vu du post de ton lien jcodeunpeu, ça me tente bien de tester ça aussi, ça a l'air migon tout plein tout ça

    un grand merci à tous les deux, big respect!

Discussions similaires

  1. Réponses: 10
    Dernier message: 19/02/2014, 15h19
  2. Comment faire l'interface graphique avec java
    Par tshiasuma dans le forum Débuter
    Réponses: 3
    Dernier message: 06/09/2013, 17h40
  3. interface graphique avec java
    Par soumti84 dans le forum Débuter
    Réponses: 3
    Dernier message: 15/03/2009, 15h18
  4. Créer une interface graphique avec java
    Par omar344 dans le forum Interfaces Graphiques en Java
    Réponses: 26
    Dernier message: 20/06/2007, 14h30
  5. Intégrer des programmes dans une interface graphique avec GUIDE
    Par maserati222e dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 24/05/2007, 12h30

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