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
|
Derniers Blogs
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson
Forum
RE : CODE GéNéRé RE : CODE GéNéRé par Julien39
Cliquez pour lire la suite par Julien39 RE : CODE GéNéRé RE : CODE GéNéRé par Julien39
Cliquez pour lire la suite par Julien39
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|