Accueil > > > CONVERTISSEUR EURO : SWING, EXCEPTIONS, JFRAME, ACTIONLISTENER, JPANEL, JCHECKBOX .....
CONVERTISSEUR EURO : SWING, EXCEPTIONS, JFRAME, ACTIONLISTENER, JPANEL, JCHECKBOX .....
Information sur la source
Description
Convertisseur Euro qui permet de manipuler les JFrame, les JCheckBox, les JTextField, les JButton, les Exceptions et l'Interface ActionListener Pas Mal pour une première application ou pour débuter avec les GUI
Source
- /********************************************
- *
- *Classe à mettre dans un fichier Main.java
- *
- *********************************************/
- import java.awt.Dimension;
- import java.awt.*;
-
-
- /**
- * Classe qui est le point d'entrée de l'application
- * C'est elle qui va lancer la fenêtre de convertisseur
- *
- * @author Duss
- */
- public class Main
- {
- public static void main(String[] args)
- {
- // Déclaration d'un objet de type Convertisseur
- // et instanciation de ce même objet
- Convertisseur fen = new Convertisseur();
-
- // Affectation d'une taille
- fen.setSize(450,410);
-
- // Affichage
- fen.setVisible(true);
-
- // Définition du titre
- fen.setTitle("Convertisseur");
-
- // On récupère la taille de l'écran (la résolution)
- // et on place notre fenêtre au milieu
- Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
- fen.setLocation((screen.width - fen.getSize().width)/2,(screen.height - fen.getSize().height)/2);
- }
- }
-
-
-
-
- /********************************************
- *
- *Classe à mettre dans un fichier Convertisseur.java
- *
- *********************************************/
-
- import java.awt.Container;
- import java.awt.GridLayout;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
-
- import javax.swing.*;
-
- /**
- * Classe permettant de faire des conversions
- * entre les francs et les euros.
- *
- * La classe "hérite" (extends) de JFrame pour pouvoir
- * afficher une fenetre à l'écran.
- *
- * Elle "implémente" (implements) l'Interface ActionListener
- * c'est à dire qu'elle doit redéfinir toutes les méthodes
- * de cette Interface.
- * Ici il n'y en à qu'une : actionPerformed
- * Cela permet d'intercepter toutes les actions qui
- * se passent dans la fenetre (les clicks par exemple)
- *
- * @author Duss
- */
- public class Convertisseur extends JFrame implements ActionListener
- {
- // Constantes pour ameliorer la lisibilité du code
- public static final int VERS_FRANCS = 1;
- public static final int VERS_EUROS = 2;
- public static final double TAUX = 6.55957;
-
- // Attributs de la classe
- private JLabel _labVal, _labRes;
- private JTextField _txtVal, _txtRes;
- private JButton _conv;
- private JCheckBox _euro, _franc;
-
- /** Constructeur : c'est la méthode qui se lance
- * quand on fait un new sur notre classe
- */
- public Convertisseur()
- {
- // On récupère l'objet de la fenetre
- // sur lequel on va pouvoir ajouter
- // nos composants graphiques.
- Container cont = getContentPane();
-
- // On crée 2 JPanel qui sont des "panneaux"
- // sur lesquels on peut poser des composants
- // cela va permettre d'avoir une mise en page
- // avec 2 layouts différents
- JPanel haut = new JPanel();
- JPanel bas = new JPanel();
-
- // Le layout de notre panel du haut
- // est une grille de 3 lignes et 2 colonnes
- haut.setLayout(new GridLayout(3,2));
-
- // Création des JLabels
- _labVal = new JLabel("Valeur");
- _labRes = new JLabel("Resultat");
-
- // Création des JTextField
- _txtVal = new JTextField();
- _txtRes = new JTextField();
-
- // Création des JCheckBox
- _euro = new JCheckBox("Euros");
- _franc = new JCheckBox("Francs");
-
- // Euro est cochée, franc ne l'est pas
- _euro.setSelected(false);
- _franc.setSelected(true);
-
- // Création du bouton
- _conv = new JButton("Conversion");
-
- // On indique que notre fenetre (this = la classe dans laquelle
- // on se trouve) est chargée "d'écouter" les actions du bouton
- // et des cases a cocher
- _conv.addActionListener(this);
- _euro.addActionListener(this);
- _franc.addActionListener(this);
-
- // On ajoute le panel haut en haut de la feuille
- // et celui du bas en dessous
- cont.add(haut,"North");
- cont.add(bas);
-
- // On ajoute les composants labels, textField et
- // checkBox au panel haut
- haut.add(_labVal);
- haut.add(_txtVal);
- haut.add(_labRes);
- haut.add(_txtRes);
- haut.add(_euro);
- haut.add(_franc);
-
- // Le bouton a celui du bas
- bas.add(_conv);
-
- }
-
- /**
- * Fonction de conversion
- * On utilise les noms des constantes pour
- * améliorer la lisibilité du code
- *
- * @param valeur la valeur à convertir
- * @param sens le sens de conversion
- * @return Un double qui est le résultat de la conversion
- */
- public double conv(double valeur, int sens)
- {
- double res;
- if (sens == VERS_FRANCS)
- res = valeur / TAUX;
- else
- res = valeur * TAUX;
-
- return res;
- }
-
- /**
- * Fonction pour arrondir
- * On décale le nombre en le multipliant
- * par 10 puissance le nombre de décimales
- * que l'on veut.
- * On fait un round dessus (arrondi à l'entier)
- * Puis on redécale en divisant par
- * 10 puissance le nombre de décimales.
- *
- * @param val La valeur à arrondir
- * @param nbDec Le nombre de décimales
- * @return Un double qui est l'arrondi
- */
- public double arrondir(double val, int nbDec)
- {
- return Math.round(val * Math.pow(10,nbDec)) / Math.pow(10,nbDec);
- }
-
- /**
- * Méthode de l'interface ActionListener
- *
- * @param e L'actionEvent correspondant à l'action
- */
- public void actionPerformed(ActionEvent e)
- {
- // En faisant e.getSource() on récupère
- // le composant qui à générer l'action
- // on peut donc faire des traitements différents
-
- // Cas ou c'est le bouton
- // On va faire la conversion
- if (e.getSource() == _conv)
- {
- // Vérification qu'il y a bien quelque chose
- // à convertir. Si non, on affiche un message
- if (_txtVal.getText().equals(""))
- JOptionPane.showMessageDialog(this,"Veuillez saisir une valeur !");
- else
- {
- int sens;
- double val = 0;
-
- // On teste quel case est cochée
- // et on détermine le sens de conversion
- if (_euro.isSelected())
- sens = VERS_EUROS;
- else
- sens = VERS_FRANCS;
-
- // La fonction parseDouble lance des
- // exceptions de type numberFormatException
- // si le String à parser n'est pas un double valide
- // on va donc intercepter cette possible
- // exception en l'entourant d'un bloc try/catch
- // try sert à prévenir qu'une exception peut survenir
- // catch sert à la récupérer et à faire un
- // traitement approprié. Ici, l'affichage d'un message
- try
- {
- val = Double.parseDouble(_txtVal.getText());
- }
- catch (NumberFormatException ex)
- {
- JOptionPane.showMessageDialog(this,"Veuillez saisir un nombre !");
- }
-
- // On appelle la fonction pour arrondir
- double res = arrondir(conv(val,sens),2);
-
- // On affiche le texte
- _txtRes.setText(String.valueOf(res));
- }
- }
-
-
- // Traitement pour que les 2 cases à cocher
- // ne soit pas cochées en même temps :
-
- // Cas ou c'est la case euro qui a généré l'action
- // La case franc prend la valeur inverse de euro
- if (e.getSource() == _euro)
- _franc.setSelected(!_euro.isSelected());
-
- // Cas ou c'est la case franc qui a généré l'action
- // La case euro prend la valeur inverse de franc
- if (e.getSource() == _franc)
- _euro.setSelected(!_franc.isSelected());
-
- }
-
-
- }
/********************************************
*
*Classe à mettre dans un fichier Main.java
*
*********************************************/
import java.awt.Dimension;
import java.awt.*;
/**
* Classe qui est le point d'entrée de l'application
* C'est elle qui va lancer la fenêtre de convertisseur
*
* @author Duss
*/
public class Main
{
public static void main(String[] args)
{
// Déclaration d'un objet de type Convertisseur
// et instanciation de ce même objet
Convertisseur fen = new Convertisseur();
// Affectation d'une taille
fen.setSize(450,410);
// Affichage
fen.setVisible(true);
// Définition du titre
fen.setTitle("Convertisseur");
// On récupère la taille de l'écran (la résolution)
// et on place notre fenêtre au milieu
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
fen.setLocation((screen.width - fen.getSize().width)/2,(screen.height - fen.getSize().height)/2);
}
}
/********************************************
*
*Classe à mettre dans un fichier Convertisseur.java
*
*********************************************/
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
/**
* Classe permettant de faire des conversions
* entre les francs et les euros.
*
* La classe "hérite" (extends) de JFrame pour pouvoir
* afficher une fenetre à l'écran.
*
* Elle "implémente" (implements) l'Interface ActionListener
* c'est à dire qu'elle doit redéfinir toutes les méthodes
* de cette Interface.
* Ici il n'y en à qu'une : actionPerformed
* Cela permet d'intercepter toutes les actions qui
* se passent dans la fenetre (les clicks par exemple)
*
* @author Duss
*/
public class Convertisseur extends JFrame implements ActionListener
{
// Constantes pour ameliorer la lisibilité du code
public static final int VERS_FRANCS = 1;
public static final int VERS_EUROS = 2;
public static final double TAUX = 6.55957;
// Attributs de la classe
private JLabel _labVal, _labRes;
private JTextField _txtVal, _txtRes;
private JButton _conv;
private JCheckBox _euro, _franc;
/** Constructeur : c'est la méthode qui se lance
* quand on fait un new sur notre classe
*/
public Convertisseur()
{
// On récupère l'objet de la fenetre
// sur lequel on va pouvoir ajouter
// nos composants graphiques.
Container cont = getContentPane();
// On crée 2 JPanel qui sont des "panneaux"
// sur lesquels on peut poser des composants
// cela va permettre d'avoir une mise en page
// avec 2 layouts différents
JPanel haut = new JPanel();
JPanel bas = new JPanel();
// Le layout de notre panel du haut
// est une grille de 3 lignes et 2 colonnes
haut.setLayout(new GridLayout(3,2));
// Création des JLabels
_labVal = new JLabel("Valeur");
_labRes = new JLabel("Resultat");
// Création des JTextField
_txtVal = new JTextField();
_txtRes = new JTextField();
// Création des JCheckBox
_euro = new JCheckBox("Euros");
_franc = new JCheckBox("Francs");
// Euro est cochée, franc ne l'est pas
_euro.setSelected(false);
_franc.setSelected(true);
// Création du bouton
_conv = new JButton("Conversion");
// On indique que notre fenetre (this = la classe dans laquelle
// on se trouve) est chargée "d'écouter" les actions du bouton
// et des cases a cocher
_conv.addActionListener(this);
_euro.addActionListener(this);
_franc.addActionListener(this);
// On ajoute le panel haut en haut de la feuille
// et celui du bas en dessous
cont.add(haut,"North");
cont.add(bas);
// On ajoute les composants labels, textField et
// checkBox au panel haut
haut.add(_labVal);
haut.add(_txtVal);
haut.add(_labRes);
haut.add(_txtRes);
haut.add(_euro);
haut.add(_franc);
// Le bouton a celui du bas
bas.add(_conv);
}
/**
* Fonction de conversion
* On utilise les noms des constantes pour
* améliorer la lisibilité du code
*
* @param valeur la valeur à convertir
* @param sens le sens de conversion
* @return Un double qui est le résultat de la conversion
*/
public double conv(double valeur, int sens)
{
double res;
if (sens == VERS_FRANCS)
res = valeur / TAUX;
else
res = valeur * TAUX;
return res;
}
/**
* Fonction pour arrondir
* On décale le nombre en le multipliant
* par 10 puissance le nombre de décimales
* que l'on veut.
* On fait un round dessus (arrondi à l'entier)
* Puis on redécale en divisant par
* 10 puissance le nombre de décimales.
*
* @param val La valeur à arrondir
* @param nbDec Le nombre de décimales
* @return Un double qui est l'arrondi
*/
public double arrondir(double val, int nbDec)
{
return Math.round(val * Math.pow(10,nbDec)) / Math.pow(10,nbDec);
}
/**
* Méthode de l'interface ActionListener
*
* @param e L'actionEvent correspondant à l'action
*/
public void actionPerformed(ActionEvent e)
{
// En faisant e.getSource() on récupère
// le composant qui à générer l'action
// on peut donc faire des traitements différents
// Cas ou c'est le bouton
// On va faire la conversion
if (e.getSource() == _conv)
{
// Vérification qu'il y a bien quelque chose
// à convertir. Si non, on affiche un message
if (_txtVal.getText().equals(""))
JOptionPane.showMessageDialog(this,"Veuillez saisir une valeur !");
else
{
int sens;
double val = 0;
// On teste quel case est cochée
// et on détermine le sens de conversion
if (_euro.isSelected())
sens = VERS_EUROS;
else
sens = VERS_FRANCS;
// La fonction parseDouble lance des
// exceptions de type numberFormatException
// si le String à parser n'est pas un double valide
// on va donc intercepter cette possible
// exception en l'entourant d'un bloc try/catch
// try sert à prévenir qu'une exception peut survenir
// catch sert à la récupérer et à faire un
// traitement approprié. Ici, l'affichage d'un message
try
{
val = Double.parseDouble(_txtVal.getText());
}
catch (NumberFormatException ex)
{
JOptionPane.showMessageDialog(this,"Veuillez saisir un nombre !");
}
// On appelle la fonction pour arrondir
double res = arrondir(conv(val,sens),2);
// On affiche le texte
_txtRes.setText(String.valueOf(res));
}
}
// Traitement pour que les 2 cases à cocher
// ne soit pas cochées en même temps :
// Cas ou c'est la case euro qui a généré l'action
// La case franc prend la valeur inverse de euro
if (e.getSource() == _euro)
_franc.setSelected(!_euro.isSelected());
// Cas ou c'est la case franc qui a généré l'action
// La case euro prend la valeur inverse de franc
if (e.getSource() == _franc)
_euro.setSelected(!_franc.isSelected());
}
}
Conclusion
Voilà, bon pour ceux qui préfèrent mettre tout dans un seul fichier, on peut aussi, il suffit de mettre la méthode Main.main dans Convertisseur. Je trouve que comme ça c'est un peu plus 'propre'. Mais c'est des manies de coder ;)
J'ai essayé d'être le plus clair possible dans mes commentaires pour que ce source puisse apporter un max d'info aux débutants. Si malgrès tout vous trouvez que c'est du patois, demandez moi des précisions ou donnez les directements !!
Duss
Si vous avez des questions n'hésitez pas
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Ajouter ma scrollbar à mon TextArea [ par sabrina145 ]
J'ai du mal à arranger le code suivant pr avoir des scrollbars à mon TextArea _txtRes import java.awt.Container; import java.awt.GridLayout; import
Convertisseur Float - Hexa en C [ par Cyli ]
Bonjour,je cherche à faire un algo de conversion de float vers hexadécimal (ou binaire avec signe-exposant-mantisse), tout ca en C, pour r&#
Calculatrice/Convertisseur Hexadecimal-Decimal-Octal-Binaire [ par nos784 ]
Bonjour à toutes et à tous.Je n'ai aucune connaissances en quoi que ce soit (peut etre en hexadecimal mais j'ai commençé hiers )Je souhaiterais savoir
Question à 0 Euro [ par omcougar ]
Bonjour,je sens que je vais me faire lincher, car plus le temps passe et plus je me heurte à des problemes qui me semblent pourtant extremement basics
convertisseur de devise utilisant la notion des bundles OSGi [ par samirbousselmi ]
je veux savoir est ce qu'une application de convertisseur de devise est réalisable en utilisant la plate-forme OSGi. Et si quelqu'un a fait une applic
inrme convertisseur entr le base en swing [ par ouabida10 ]
salut a tous je vous propose aujourd'huit une appliction en swing qui vous permet la converssation d'un nombre d'une base de numération vers une autre
Manipulation JTable-JLabel(Icon) [ par crazysetup ]
Bonjour à tous, J'implore votre aide parce que ça fait 2 jours que je bute sur ce problème, alors voila : J'ai une JTable composée de 2 colonnes, cet
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|