[java] Pb: transformer IHM en applet

Pb: transformer IHM en applet [java] - Java - Programmation

Marsh Posté le 17-08-2003 à 19:51:35    

Salut tlm,
 
Pour mon memoire (Web Services), j'ai fait une appli de gestion de compte bancaire, le truc vraiment simple.
Mon IHM contient une petite quinzaine de JFrame (Swing).
Tout roule impec...
Je voudrais que les utilisateurs accèdent à mon appli via leur navigateur,
il faut donc ke je transforme mon IHM en applet  
mais je ne sais pas trop comment m'y prendre.
 
La classe qui lance l'IHM est la classe "Accueil.java" dont voici une partie du code:
 

Code :
  1. public class Accueil extends JFrame implements ActionListener{
  2. private JButton btn_valid, btn_quit, btn_admin;
  3. private JTextField val_login;
  4. private JPasswordField val_passwd;
  5. protected int idclient = 0;
  6. private static String endpoint = ""; // Localisation du Web Service
  7. private static String serviceName = ""; // Nom du Web Service
  8. public Accueil(){
  9.  setSize(450, 210);
  10.  setTitle("Accueil" );
  11.  JPanel loginPane = new JPanel();
  12.  JLabel label_login = new JLabel("Votre login: ", JLabel.CENTER);
  13.  val_login = new JTextField(20);
  14.  loginPane.add(label_login);
  15.  loginPane.add(val_login);
  16.  JPanel passwdPane = new JPanel();
  17.  JLabel label_passwd = new JLabel("Votre password: ", JLabel.CENTER);
  18.  val_passwd = new JPasswordField(20);
  19.  val_passwd.setEchoChar('*');
  20.  passwdPane.add(label_passwd);
  21.  passwdPane.add(val_passwd);
  22.  JPanel boutonPane = new JPanel();
  23.  btn_quit = new JButton("Quitter" );
  24.  btn_valid = new JButton("Valider" );
  25.  boutonPane.add(btn_quit);
  26.  boutonPane.add(btn_valid);
  27.  JPanel adminPane = new JPanel();
  28.  btn_admin=new JButton("Administrateur" );
  29.  adminPane.add(btn_admin);
  30.  btn_quit.addActionListener(this);
  31.  btn_valid.addActionListener(this);
  32.  btn_admin.addActionListener(this);
  33.  Container contentPane=getContentPane();
  34.  contentPane.setLayout(null);
  35.  contentPane.add(loginPane);
  36.  contentPane.add(passwdPane);
  37.  contentPane.add(boutonPane);
  38.  contentPane.add(adminPane);
  39.  loginPane.setBounds(90, 30, 300, 30);
  40.  passwdPane.setBounds(60, 60, 330, 30);
  41.  boutonPane.setBounds(162, 90, 160, 30);
  42.  adminPane.setBounds(0, 150, 130, 30);
  43.  setLocation(300, 300);
  44.  show();
  45.  addWindowListener(new WindowAdapter(){
  46.   public void windowClosing(WindowEvent e) {
  47.    System.exit(0);
  48.   }
  49.  });
  50. }
  51. public static void main(String[] args) {
  52.  JFrame FrameClient = new Accueil();
  53. }
  54. public void actionPerformed(ActionEvent evt){
  55.  if (evt.getSource() instanceof JButton){
  56.   if (evt.getSource() == btn_quit)
  57.    System.exit(0);
  58.   else if (evt.getSource() == btn_valid)
  59.    valider();
  60.   else if (evt.getSource() == btn_admin)
  61.    AdminForm();
  62.  } //Fin if
  63. }
  64.         //Ouvre la JFrame AdminLogin
  65. public void AdminForm(){
  66.  new AdminLogin(this);
  67.  this.hide();
  68. }


 
Cette JFrame donne ca:
 
ftp://anonymous@sentenz.dyndns.org/Accueil.png
 
Quand on clique le bouton "Administrateur", la JFrame "AdminLogin" s'ouvre.
 
Enfin bref, que dois-je faire??
Faire hériter ma classe "Accueil" de JApplet et toutes les autres classes les faire hériter de JPanel?
Si oui, comment faire pour supprimer l'affichage de ma classe "Accueil" et faire apparaitre celui de ma classe "AdminLogin"?
 
Si ce n'est pas la methode a suivre, je vois pas comment faire.
Merci pour votre aide
 
P.S: Vous l'aurez compris, je suis un peu un newb dans les applets... j'ai reussi à transformer ma classe "Accueil" en appplet ms j'arrive pas à appeller ma classe "AdminLogin".


Message édité par sentenz le 17-08-2003 à 20:37:30
Reply

Marsh Posté le 17-08-2003 à 19:51:35   

Reply

Marsh Posté le 18-08-2003 à 09:45:55    

as-tu considéré l'option WebStart http://java.sun.com/products/javawebstart/
ca te permettrait d'avoir ton application disponible à partir d'un browser ("Java Web Start -- a technology for simplifying deployment of Java applications-- gives you the power to launch full-featured applications with a single click from your Web browser." )  sans devoir la transformer en applet.
 

Reply

Marsh Posté le 18-08-2003 à 11:59:42    

je viens de lire la page sur Java Web Start...
Est-ce les futurs utilisateurs seront obligés de le telecharger??
Si oui, ca m'interesse pas trop...
Surtout que je pense avoir reussi à transformer mon appli en applet, faut juste jouer avec le Container de l'applet afin de faire apparaitre les différents formulaires (faut juste ke je transforme toutes mes JFrame (sauf celle ki lance mon appli) en JPanel)
 
Mais merci quand mm ozark74. :D

Reply

Marsh Posté le 18-08-2003 à 12:18:27    

sentenz a écrit :


Est-ce les futurs utilisateurs seront obligés de le telecharger??
Si oui, ca m'interesse pas trop...


 
inclus en standard dans les nouvelles versions du JRE AFAIK. Ton applet tournant en SWING, tes clients seront obligés d'installer le JRE de toute façons ..


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-08-2003 à 12:27:00    

ok, c'est noté...
 
J'ai une autre petite question.
Etant donné que mon client (IHM) fait appel à des Web Services, j'ai besoin d'avoir qq .jar d'Axis
Qd j'aurais fait mon applet (je pense que je vais faire l'Applet histoire de tater un peu de l'Applet :D), et générer le .jar,
comment je pourrais faire pour inclure les librairies que j'aurai besoin dans mon Applet.jar??
On peut inclure des jar dans des jar??


Message édité par sentenz le 18-08-2003 à 12:28:09
Reply

Marsh Posté le 18-08-2003 à 13:48:22    

Citation :

Qd j'aurais fait mon applet (je pense que je vais faire l'Applet histoire de tater un peu de l'Applet :D), et générer le .jar,  
comment je pourrais faire pour inclure les librairies que j'aurai besoin dans mon Applet.jar??  
On peut inclure des jar dans des jar??


 
le plus simple est de spécifier les jars nécessaires dans le tag <applet> de la page html qui contient ton applet
style :  
 

Code :
  1. <APPLET
  2. ARCHIVE="axis.jar,xalan.jar,crimson.jar"
  3. CODE="com.machin.truc.MyApplet.class"
  4. WIDTH=500
  5. HEIGHT=600>
  6. </APPLET>


Message édité par ozark74 le 18-08-2003 à 13:49:42
Reply

Marsh Posté le 18-08-2003 à 14:09:21    

DarkLord a écrit :


 
inclus en standard dans les nouvelles versions du JRE AFAIK. Ton applet tournant en SWING, tes clients seront obligés d'installer le JRE de toute façons ..


 
Par ailleurs autre petit plus pour Web Start, l'utilisateur ne doit utiliser son browser que la première fois qu'il utilise (et installe) l'application. Ensuite il accèdera à l'application via un raccourci qui aura été installé sur son bureau et/ou menu démarrer.
 
A chaque démarrage de l'application Web Start va vérifier si il n'y a pas une nouvelle version de l'application disponible sur le server. Si nouvelle version alors download de la nouvelle version.

Reply

Marsh Posté le 18-08-2003 à 14:27:04    

Autre petit pb, c'est ke "axis.jar" pèse environ 1.2 Mo.
Est-ce ke je peux ouvrir ce .jar et mettre dans mon applet.jar seulement les classes k'il a besoin pour faire les appels distants genre les classes "Call" et "Service" (et peut-etre qq autre, je sais plus...)

Reply

Marsh Posté le 18-08-2003 à 14:29:15    

sentenz a écrit :

Autre petit pb, c'est ke "axis.jar" pèse environ 1.2 Mo.
Est-ce ke je peux ouvrir ce .jar et mettre dans mon applet.jar seulement les classes k'il a besoin pour faire les appels distants genre les classes "Call" et "Service" (et peut-etre qq autre, je sais plus...)


 
je doute de la légalité de l'affaire :o
a mon avis tu ne peux pas redistribuer une partie du code mais il faudrait confirmer.
 
Sinon regarde chez axis si ils n'ont pas une version 'client' de leur distribution, plus légère


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-08-2003 à 14:37:53    

sentenz a écrit :

Autre petit pb, c'est ke "axis.jar" pèse environ 1.2 Mo.


 
ce jar ne sera downloadé que la première fois que les clients se connecteront, donc je pense pas que ce soit dramatique dramatique.

Reply

Marsh Posté le 18-08-2003 à 14:37:53   

Reply

Marsh Posté le 18-08-2003 à 14:41:44    

si je dis pas de bétise, avec axis il faut aussi tout un tat d'autre jar, genre xerces qui est assez corpulent aussi ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 18-08-2003 à 14:43:46    

benou a écrit :

si je dis pas de bétise, avec axis il faut aussi tout un tat d'autre jar, genre xerces qui est assez corpulent aussi ...


 
effectivement :jap:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-08-2003 à 15:00:46    

Si je comprends bien ce ke vous me dites,
c'est ke ca sert a rien ke je me casse les bonbons a faire une applet (le but étant de ne pas passer sur chq poste client) car de toute facon, faudra ke chq client ait les lib axis...
J'ai bon ou pas?? :sweat:
 
Parce ke mm si je fais l'applet, ca le fait pas trop cote optimisation de dwl 10 Mo (axis) mm si c'est a faire ke lors du 1er appel...
 
(En tout cas, merci de votre contribution :jap: )


Message édité par sentenz le 18-08-2003 à 15:01:38
Reply

Marsh Posté le 18-08-2003 à 15:02:30    

et ca encore c'est à condition quil ne doivent pas aussi installé la JRE ! ;)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 18-08-2003 à 15:05:45    

sentenz a écrit :

Si je comprends bien ce ke vous me dites,
c'est ke ca sert a rien ke je me casse les bonbons a faire une applet (le but étant de ne pas passer sur chq poste client) car de toute facon, faudra ke chq client ait les lib axis...
J'ai bon ou pas?? :sweat:


 
bah ils vont pas les inveter les classes axis hein :heink:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-08-2003 à 15:18:23    

Petite précision (ki a son importance :) )
Cette appli ne sera jamais utilisé "pour de vrai"
C'est juste pour pouvoir montrer qqch lors de la soutenance de mon mémoire, c'est pour ca ke j'ai l'air un peu indécis quant à la solution à choisir.
Vu ke ca sera ke pour ma soutenance, je vais faire l'applet (mm si il faut dwl les 10 Mo, je le ferai avant komm ca, ca sera invisible pour le(s) futur(s) user)
 
Une autre petite question pour ceux ki ont deja developpé des Web Services:
Est-ce ke vous avez deja utilisez les lib d'Apache ou d'IBM pour faire du XML Signature ou du XML Signature??
J'ai regarder du coté d'Apache, c'est un peu la misere, j'ai pas trop pigé.

Reply

Marsh Posté le 18-08-2003 à 18:18:19    

Pour ce qui est de l'applet voila ce que j'ai fait (je sais pas si c'est la meilleur solution)
 
tu crée une classe qui herite de JApplet
dans cette classe:
 
// ici tu recupere toute sorte de variables de la balise <applet>
TonAppliFrame app = new TonAppliFrame();
 
getContentPane().add(app.getContentPane(),"Center" );
 


Message édité par veryfree le 18-08-2003 à 18:21:36
Reply

Marsh Posté le 19-08-2003 à 09:38:16    

veryfree> ok, je vais test
thxs

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed