[JAVA] Convertisseur Euro-Franc donné la communauté open source ;-)

Convertisseur Euro-Franc donné la communauté open source ;-) [JAVA] - Java - Programmation

Marsh Posté le 27-05-2002 à 00:26:54    

voila, je suis en train de chercher un appart et ca me fesait chier de tout le temps taper le prix du loyer "* 6.55957" dans la calculatrice de windows pour avoir le prix en franc alors je me suis fait mon propre convertisseur.
 
En réalité c'est parce qu'en ce moment je prend mon pied à découvrir la création d'IHM en Java. :D
 
Et puis une fois fini, je me suis dit que ca en intéresserait peut être quelque(s)-un(s) d'entre-vous, ou même juste par curiosité pour voir le code pour ceux qui ne connaissent pas SWING ou AWT (y en a tout le temps qui demandent des tutoriaux ...)
 
donc voila :  
la classe à mettre dans un rep convertisseur

Citation :


package convertisseur;
 
import java.awt.*;
import java.awt.event.*;
 
import javax.swing.*;
import javax.swing.text.*;
 
public class Convertisseur extends JFrame {
 
   private final int taille_zone_de_saisie = 15;
 
   private JTextField tf_franc;
   private JTextField tf_euro;
 
   private ConvertisseurIHM convertisseurFrancEuro;
   private ConvertisseurIHM convertisseurEuroFranc;
 
   public Convertisseur() {
      tf_franc = new JTextField(taille_zone_de_saisie);
      tf_franc.setHorizontalAlignment(JTextField.RIGHT);  
      tf_euro = new JTextField(taille_zone_de_saisie);
      tf_euro.setHorizontalAlignment(JTextField.RIGHT);  
 
      convertisseurFrancEuro = new Franc2EuroConvertisseurIHM(tf_franc, tf_euro);
      convertisseurEuroFranc = new Euro2FrancConvertisseurIHM(tf_euro, tf_franc);
 
      tf_franc.addActionListener(convertisseurFrancEuro);
      tf_euro.addActionListener(convertisseurEuroFranc);
 
      tf_franc.addFocusListener(convertisseurFrancEuro);
      tf_euro.addFocusListener(convertisseurEuroFranc);
 
      // passe des euros au franc avec touche 'bas'
      tf_franc.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e) {
               if (e.getKeyCode() == 38) {
                  tf_euro.requestFocus();
               }        
            }
         });
      // passe des francs a l'euro avec touche 'haut'
      tf_euro.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e) {
               if (e.getKeyCode() == 40) {
                  tf_franc.requestFocus();
               }        
            }
         });
 
      JPanel pan_g = new JPanel(new GridLayout(2,1) {{ setVgap(1); }});
      JPanel pan_d = new JPanel(new GridLayout(2,1) {{ setVgap(1); }});
      JPanel pan_princpal = new JPanel(new BorderLayout(5,0));
 
      pan_princpal.add(pan_g, BorderLayout.WEST);
      pan_princpal.add(pan_d, BorderLayout.CENTER);
      pan_princpal.setBorder(BorderFactory.createEmptyBorder(2,2,2,2));
 
      pan_g.add(new JLabel("Euros : ", JLabel.CENTER));
      pan_g.add(new JLabel("Francs : ", JLabel.CENTER));
      pan_d.add(tf_euro);
      pan_d.add(tf_franc);
 
      this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
               System.exit(0);
            }
         });
 
      this.setContentPane(pan_princpal);
      this.pack();
      this.setTitle("Convertisseur" );
   }
 
 
   abstract class   ConvertisseurIHM implements ActionListener, FocusListener {
      protected java.text.NumberFormat floatFormater = new java.text.DecimalFormat("#,##0.00" );
      private JTextComponent src;  
      private JTextComponent dest;  
   
      public ConvertisseurIHM(JTextComponent src, JTextComponent dest) {
         this.src = src;
         this.dest = dest;
      }
   
      protected abstract float convertion(float f);    
 
      public void focusGained(FocusEvent e) {
         if (! e.isTemporary()) {
            if ( e.getComponent() == src) { // devrait être toujours le cas !
               src.setSelectionStart(0);
               src.setSelectionEnd(src.getText().length());
            }
         }  
      }
      public void focusLost(FocusEvent e) {}
 
      public void actionPerformed(ActionEvent e) {
         convertit();
      }
 
      private void convertit() {
         try {
            String text = src.getText();
            if (text.equals("" )) { return; }      
            text = withoutSpaceAndComma(text);
            float f = Float.parseFloat(text);
            // met à jour la zone de texte de destination
            dest.setText(floatFormater.format(convertion(f)));
            // met au bon format la zone de texte source
            text = floatFormater.format(f);
            src.setText(text);
            src.setSelectionStart(0);
            src.setSelectionEnd(text.length());
         } catch (Exception ex) {
            ex.printStackTrace();
            tf_franc.setText("Erreur : " + ex);
         }  
      }
   
      private String withoutSpaceAndComma(String text) {
         text = text.replace(',', '.';);
         StringBuffer buf = new StringBuffer(text.length());
         char c;
         for (int i = 0; i < text.length(); i++) {
            c = text.charAt(i);          
            if (! Character.isSpaceChar(c)) {
               buf.append(c);
            }
         }
         return buf.toString();
      }
   }
 
   public static final float unEuroEnFrancs = (float) 6.55957;
 
   class Franc2EuroConvertisseurIHM extends ConvertisseurIHM {
      public Franc2EuroConvertisseurIHM(JTextComponent src, JTextComponent dest) { super(src,dest); }
      public float convertion(float francs) { return francs / unEuroEnFrancs; }    
   }
 
   class Euro2FrancConvertisseurIHM extends ConvertisseurIHM {
      public Euro2FrancConvertisseurIHM(JTextComponent src, JTextComponent dest) { super(src,dest); }
      public float convertion(float euros) { return euros * unEuroEnFrancs; }    
   }
     
     
   /// MAIN ///
   public static void main (String[] args) {
      Convertisseur c = new Convertisseur();
      Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
      c.setLocation((int) (screenSize.getWidth()/4 - c.getWidth()/2),
                 (int) (screenSize.getHeight()/4 - c.getHeight()/2));
      c.setVisible(true);
   
   }    
}


 
et le .cmd ou .bat qui va bien (à mettre dans le rep en dessous) :

Citation :

start javaw -classpath . convertisseur.Convertisseur


 
PS : en même temps ca me permet de tester la création de topic avec choix de la rubrique ;)
PS2 : surtout si vous trouvez ce post complétement inutile je suis bien d'accord avec vous, alors ne répondez pas et il tombera rapidement dans les abimes du forum ! ;)

 

[jfdsdjhfuetppo]--Message édité par benou le 27-05-2002 à 00:46:38--[/jfdsdjhfuetppo]


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

Marsh Posté le 27-05-2002 à 00:26:54   

Reply

Marsh Posté le 27-05-2002 à 09:26:33    

:bounce:  UP!  :bounce:


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

Marsh Posté le 27-05-2002 à 09:41:45    

yeahhh.... les joies des GUI en Java  [:yamusha]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 27-05-2002 à 10:13:57    

tiens, une question en passant : vous pensez quoi de cette façon d'initialiser certaines classes :
 

Citation :

JPanel pan_g = new JPanel(new GridLayout(2,1) {{ setVgap(1); }});


 
Ca créé une class interne anonyme qui est initialisée par un bloc static qui sert de constructeur pour les classes anonymes.
 
Ca permet d'initialiser certains objets en 1 ligne et ca rend donc le code plus lisible. En contrepartie, ca créée une classe supplémentaire.


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

Marsh Posté le 27-05-2002 à 10:16:25    

a ouai
j en avait une en flash elle tapait :love:  
en fait le top c une convertion instantané: des que tu entres un chiffre la convertion apparait .En gros t a plus besoin d appuyer sur un bouton pour voir combien ca fait...

Reply

Marsh Posté le 27-05-2002 à 10:19:52    

veryfree a écrit a écrit :

a ouai
j en avait une en flash elle tapait :love:  
en fait le top c une convertion instantané: des que tu entres un chiffre la convertion apparait .En gros t a plus besoin d appuyer sur un bouton pour voir combien ca fait...  




j'avais fait ca au début mais ca me plaisait pas trop ....


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

Marsh Posté le 27-05-2002 à 10:26:39    

t as qu a le mettre en option de meme qu'un de convertion reglable pour nos amis Belges tres present sur ce forum....

Reply

Marsh Posté le 27-05-2002 à 11:01:50    

veryfree a écrit a écrit :

t as qu a le mettre en option de meme qu'un de convertion reglable pour nos amis Belges tres present sur ce forum....  




on verra ca dans la v2 :)
 
sinon, aucun avis pour ma question de toute a l'heure ?


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

Marsh Posté le 27-05-2002 à 11:07:22    

benou a écrit a écrit :

 
on verra ca dans la v2 :)
 
sinon, aucun avis pour ma question de toute a l'heure ?  




 
Ca permet d'initialiser certains objets en 1 ligne et ca rend donc le code plus lisible. En contrepartie, ca créée une classe supplémentaire.
 
 
OUI MOI J AIME BIEN
faut juste s habituer mais c vrais que c plus clair en une ligne
 
les class internes anonymes c bon mangez en
 
 
 
faudrait que j arrete blabla moi  :D

Reply

Marsh Posté le 27-05-2002 à 14:46:18    

moi je m'attendait à avoir quelques commentaires de dark, gilou et les être javaphiles ... [:sacplastic]


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

Marsh Posté le 27-05-2002 à 14:46:18   

Reply

Marsh Posté le 27-05-2002 à 14:53:58    

mais euh j'ai dit up
 
J'ai pas encore eu le temps de tester :(
 
 :cry: l'est méchant avec moi


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

Marsh Posté le 27-05-2002 à 14:58:48    

DarkLord a écrit a écrit :

mais euh j'ai dit up
 
J'ai pas encore eu le temps de tester :(
 
 :cry: l'est méchant avec moi  




meuh nan  !!! :D
 
je te demande pas de tester : ca casse vraiment pas des briques, je demandais juste ce que vous pensiez de ce style d'écriture :  

Citation :


JPanel pan_g = new JPanel(new GridLayout(2,1) {{ setVgap(1); }});
 
Ca créé une class interne anonyme qui est initialisée par un bloc static qui sert de constructeur pour les classes anonymes.  
 
Ca permet d'initialiser certains objets en 1 ligne et ca rend donc le code plus lisible. En contrepartie, ca créée une classe supplémentaire.


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

Marsh Posté le 27-05-2002 à 15:23:04    

Yo ! Je découvre en même temps que je lis cette syntaxe peu orthodoxe. Mon avis est que c'est plutôt sympa comme manière. Je n'en avais pas entendu parler. Sympa aussi l'appli ! [:xp1700]

Reply

Marsh Posté le 27-05-2002 à 15:24:52    

boh moi franchement je suis nul en GUI java donc j'ai pas spécialement d'impression désolé :D


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

Marsh Posté le 27-05-2002 à 15:32:45    

c'est quoi Java ?
 
 
ok, je sors  :lol:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 27-05-2002 à 15:37:39    

Cherrytree a écrit a écrit :

Yo ! Je découvre en même temps que je lis cette syntaxe peu orthodoxe. Mon avis est que c'est plutôt sympa comme manière. Je n'en avais pas entendu parler.



bha ouais moi non plus ...
 
aurai-je découvert quelque chose ??  
un territoire inconnu sur le grand continent Java ??
 
ta tata taaaa ta tataaaa, ta tata taaaaa ta tataaa ta ta ...
 
Indiana Benou à la reherche de la inner classe perdue
 
:D :lol:


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

Marsh Posté le 27-05-2002 à 15:38:00    

Cherrytree a écrit a écrit :

Yo ! Je découvre en même temps que je lis cette syntaxe peu orthodoxe. Mon avis est que c'est plutôt sympa comme manière. Je n'en avais pas entendu parler. Sympa aussi l'appli ! [:xp1700]  




 
Ouais, c vrai, c pas mal, mais uniquement tant que tu touches pas à ton layout par la suite, quoi, et tant que t'en a pas besoin.....

Reply

Marsh Posté le 27-05-2002 à 15:39:41    

gfive a écrit a écrit :

 
Ouais, c vrai, c pas mal, mais uniquement tant que tu touches pas à ton layout par la suite, quoi, et tant que t'en a pas besoin.....  




je suis pas un habitué des GUI java, mais il me semble que souvent on s'en sert pas par la suite nan ?


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

Marsh Posté le 27-05-2002 à 15:39:49    

pour revenir au sujet et à la surpuissance de java qui prend environ 70 lignes d'object design power, la même chose en js :
 
<input onkeydown="if (event.keyCode == 13) nextSibling.innerHTML = parseInt(this.value) * 6.55;"><div></div>
 
mais c'est trop simple, on n'a pas le temps de souffrir, haaaa .... :lol:

Reply

Marsh Posté le 27-05-2002 à 15:53:25    

Penses à gérer l'appui sur les lettres car sinon une belle Erreur


---------------
Le Logiciel est là :
Reply

Marsh Posté le 27-05-2002 à 16:12:22    

benou a écrit a écrit :

ta tata taaaa ta tataaaa, ta tata taaaaa ta tataaa ta ta ...
 
Indiana Benou à la reherche de la inner classe perdue
 
:D :lol:  



Yaisse, on s'y croirait.

Reply

Marsh Posté le 03-06-2002 à 16:30:40    

Pffff, en R&D,  et çà connais même pô l'utilisation des classes internes, alors que çà te fais une instanciation d'Objet et de methode comme çà pour rire  ;)  
 
On embauche vraiment n'importe qui ici  :D


---------------
Eos 20d(kit) + 70-200 F4L + 50 F1.4 + 420 EX Powered®
Reply

Marsh Posté le 03-06-2002 à 16:38:40    

tiens un collègue de l'ami benou :D


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

Marsh Posté le 03-06-2002 à 16:46:01    

Meliok a écrit a écrit :

Pffff, en R&D,  et çà connais même pô l'utilisation des classes internes, alors que çà te fais une instanciation d'Objet et de methode comme çà pour rire  ;)  
 
On embauche vraiment n'importe qui ici  :D  




 
Mais qu'est ce qu'il fout là lui ???
maintenant il va voir que je fous rien de mes journées !!!! :D

Reply

Marsh Posté le 03-06-2002 à 16:47:33    

benou a écrit a écrit :

 
 
Mais qu'est ce qu'il fout là lui ???
maintenant il va voir que je fous rien de mes journées !!!! :D  




 
 :lol:  :lol:

Reply

Marsh Posté le 03-06-2002 à 16:52:19    

benou a écrit a écrit :

 
 
Mais qu'est ce qu'il fout là lui ???
maintenant il va voir que je fous rien de mes journées !!!! :D  




 
 [:xp1700]


Message édité par darklord le 06-03-2002 à 16:52:29

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

Marsh Posté le 03-06-2002 à 18:00:55    

benou a écrit a écrit :

 
 
Mais qu'est ce qu'il fout là lui ???
maintenant il va voir que je fous rien de mes journées !!!! :D  



damned grilled, on dirait.


---------------
Le site de ma maman
Reply

Marsh Posté le 03-06-2002 à 21:33:57    

et oh damned grilled (C) moi :D
 
lol  [:titprem]


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

Marsh Posté le 04-06-2002 à 00:16:03    

Cherrytree a écrit a écrit :

damned grilled, on dirait.  




pas grave, c'est pas un chef ! ;)
 
manquerait plus que les chefs passe leur temps sur les forums, non mais ... :D


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

Marsh Posté le 04-06-2002 à 00:36:42    

benou a écrit a écrit :

 
pas grave, c'est pas un chef ! ;)
 
manquerait plus que les chefs passe leur temps sur les forums, non mais ... :D  



Ouais mais damned grilled quand même (damned grilled is a registered trademark of DarkLord inc.)


---------------
Le site de ma maman
Reply

Marsh Posté le 04-06-2002 à 11:04:59    

benou a écrit a écrit :

 
 
Mais qu'est ce qu'il fout là lui ???
maintenant il va voir que je fous rien de mes journées !!!! :D  




 
T'inquiète, avec un peu de bol, je te rejoins après les vacances  :D


---------------
Eos 20d(kit) + 70-200 F4L + 50 F1.4 + 420 EX Powered®
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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