Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1684 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java] Pbr principes de conception IHM....

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] Pbr principes de conception IHM....

n°526576
Dephi
Posté le 30-09-2003 à 08:31:57  profilanswer
 

:hello:
 
J'ai beaucoup du mal avec les concepts de programmation evenementiel (ca fait 2 ans que je fais du Java mais j'ai jamais codé une IHM de ma vie, C vraiment pas une partie qui m'attire....)
j'ai du mal a comprendre comment faire pour faire communiquer proprement 2 composants par exemple, où déclarer les listeners...
 
 
Petit exemple tout bête...
 
J'ai une Fenetre (jFrame1)  avec 2 panel a l'interieur (jPanel1 & jPanel2)
jPanel1 contient un bouton
jPanel2 contient une TextArea
 
Je veux faire en sorte qu'en clickant sur le bouton, un msg apparaisent dans la textArea..
 
 
En Java, sans réfléchir je coderai comme ca..
 

Code :
  1. public class JFrame 1 extends JFrame {
  2. JPanel jPanel1;
  3. JPanel jPanel2;
  4. }
  5. public class JPanel1 extends JPanel {
  6. JButton button1 = new Button();
  7. }
  8. public class JPanel2 extends JPanel {
  9. JTextArea textArea = new JTextArea();
  10. }


 
 
Mes questions :
Je dois ajouter un listener au bouton..
Ce listener, sur action "click", doit ecrire dans le textArea..
Où vaut-il mieux instancier ce Listener ??
Dans JFrame1 (soit en classe interne, soit en faisant un implements ActionListener) ??
Dans JPanel1 ????
J'aurai tendance a vouloir l'instancier dans JPanel1 mais dans ce cas là, il me faut la réference du TextArea..
L'avantage de le déclarer dans JFrame1 C que je peux récupérer plus facilement la ref sur textArea...
 
 
Je suis totalement perdu, j'ai du mal avec le concept MVC...
:/
 
Une URL d'un bon Tutorial Sun a me proposer sinon ??
(même si je prefererai une explication écrite par un petit gars comme moi... :D )
 
Merciiii beaucoup  
:jap:


---------------

mood
Publicité
Posté le 30-09-2003 à 08:31:57  profilanswer
 

n°526641
nerisson
Pic-pic
Posté le 30-09-2003 à 10:02:28  profilanswer
 

Tutorial Swing:
http://java.sun.com/docs/books/tutorial/uiswing/
Partie sur les boutons:
http://java.sun.com/docs/books/tut [...] utton.html


---------------
Light is right
n°527813
Krueger
tout salaire demande dutravail
Posté le 01-10-2003 à 14:28:30  profilanswer
 

Dephi a écrit :

Petit exemple tout bête...
 
J'ai une Fenetre (jFrame1)  avec 2 panel a l'interieur (jPanel1 & jPanel2)
jPanel1 contient un bouton
jPanel2 contient une TextArea
 
Je veux faire en sorte qu'en clickant sur le bouton, un msg apparaisent dans la textArea..


 
Selon le modèle MVC, il faut enregistrer un listener sur le bouton car c'est son activation qui va déclencher l'événement "écrire le message dans le TextArea". Ce listener doit connaître le modèle du TextArea, soit un objet de type Document. Lors de l'activation de ce listener, ce dernier ajoute le message dans le Document et l'affichage est alors automatiquement mise à jour car ce Document se charge lui-même d'informer son TextArea de réactualiser son affichage.

n°530138
Dephi
Posté le 03-10-2003 à 11:08:56  profilanswer
 

Merci pour les réponses...
:jap:
 
 
Mais après avoir lu X tutorials sur le net, et essayer de suivre vos conseils j'ai encore ENORMEMENT de mal à comprendre comment faire proprement..
:(
 
Je suis arrivé à une architecture qui me parait assez correcte (car je sépare vraiment l'aspect graphique pur de l'aspect metier)
mais j'aimerai avoir votre avis please.. (vu que j'y connais rien..)
 
Ma future appli n'a pas une IHM très compliqué, peu d'interactions "inter-composants", C plus
sur la gestion et algorythme de graph que je vais me prendre la tete (heureusement JGraph est là.. :D )
J'ai donc :
1 JFrame principale composée de :
 - 1 menu
 - 1 toolBar
 - 1 JPanel  
 - et X fenetre internes (chacune composée de 3 JPanel)
 
Ce que je comptais faire :
<> La JFrame principale (appelons là mainJFrame) appelle  l'initialisation de ses différents composants et les ajoute a son ContentPane
 
<> les composants IHM propose des méthodes publiques pour récupérer "leurs sous-composants" (dans le cas de la JToolBar, getButtonNew(), getButtonSave()...)...
 
<> a la fin de l'initialisation IHM, C mainJFrame qui s'occupe des evenements...
J'ai crée des classes dédiés à la gestion des evenements du style
 

Code :
  1. public class JToolBarActionListener extends ActionListener {
  2.                                                                
  3.     public static final String ACTION_NEW = "New";                     
  4.     public static final String ACTION_OPEN = "Open";                   
  5.     public static final String ACTION_SAVE = "Save";                   
  6.    
  7.     // reference sur la fenetre principale  
  8.     private MainJFrame mainJFrame;
  9.    
  10.     public JToolBarActionListener(MainJFrame mainJFrame_p) {   
  11.      mainJFrame = mainJFrame_p;
  12.     } 
  13.    
  14.    
  15.     public void actionPerformed(ActionEvent actionEvent_p) {                                                             
  16. String actionCommand_l = actionEvent_p.getActionCommand();                 
  17.                                                                                    
  18. if (actionCommand_l.equals(ACTION_NEW)) {                                         
  19.     // je reprends l'exemple, je clicke sur un bouton, affichage dans JTextArea...
  20.     mainJFrame.getJPanelStatus().appendText("New Project..." );
  21.                                                                                    
  22. } else if (actionCommand_l.equals(ACTION_OPEN)) {                                 
  23. ...
  24. }
  25. ...
  26.     }
  27. }


 
 
<> mainJFrame n'a "plus qu'a faire"  

Code :
  1. JToolBarActionListener jtbaL = new JToolBarActionListener(this);                   
  2. jToolBarComponent.getButtonOpen().setActionCommand(JToolBarActionListener.ACTION_OPEN);
  3. jToolBarComponent.getButtonOpen().addActionListener(jtbaL);                   
  4. jToolBarComponent.getButtonNew().setActionCommand(JToolBarActionListener.ACTION_NEW); 
  5. jToolBarComponent.getButtonNew().addActionListener(jtbaL);

                                               
                                                       
                                                       
L'initialisation des evenements risque d'etre un peu loue mais au moins, je trouve qu'elle
est centralisée (facilement retrouvable) et je sépare rlement l'aspect IHM du reste...
Maintenant, ca ne suit pas du tout (il me semble) les p      atterns concernant les evenements IHM...
                                                       
Votre avis please..                                    
C vraiment pourri-pourri ou C acceptable ?? (ou lachons nou, C une idée de génie.. :sarcastic:)    
(tous les commentaires sont les bienvenus..)            
                                                       
                                                       
D'avance merci et désolé pour ces questions facon newbie total...
:sweat:


Message édité par Dephi le 03-10-2003 à 11:10:39

---------------

n°530160
frenchkiss
Posté le 03-10-2003 à 11:27:08  profilanswer
 

salut delphi,
 
je crois comprendre ton probleme.
le fait est effectivement , que l 'on peut coder ca de plein de facon differente .
Ce que j aime pas trop en java c'est lorsque l on declare des classes a l 'interieur d'autres , ca rends vite les choses ..desagreables.
 
j ai essaye un peu le java et le plus plossible j'eesaie de garder un "fichier" par objet. et au point de vue conception je fais excactement dans l esprit de ce que tu a citer ci dessus.
 
ce qui a mon gout est plus propre.
 
 
si tu veux plus d info tu peux tenter une recherche sur le MVC
(model vue controlleur) qui t esplique comment creer une ihm en separant au mieux les couches (presentation interraction donnes)
 
 
FK


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java] Pbr principes de conception IHM....

 

Sujets relatifs
[Help] Pb PHP exec( ) et javaJava
Recherche bibliothèque java de visualisation de stats[Java] Affichage d'une image dans un JPanel
[JAVA] format de date tordu ;)[Java] Problème d'install du SDK sous Windows 2000...
[Java script] Choix des raccourcis claviers pour aider à l'édition.gui en java
[java / c] linker du C et du java : java native interfaceCompilation JAVA depuis un programme JAVA
Plus de sujets relatifs à : [Java] Pbr principes de conception IHM....


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR