begin process at 2008 08 20 14:27:19
1 228 866 membres
232 nouveaux aujourd'hui
14 257 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONVERTISSEUR EURO : SWING, EXCEPTIONS, JFRAME, ACTIONLISTENER, JPANEL, JCHECKBOX .....


Information sur la source

Catégorie :Swing Classé sous : convertisseur, euro, franc Niveau : Débutant Date de création : 02/12/2002 Date de mise à jour : 02/12/2002 16:52:40 Vu / téléchargé: 9 985 / 587

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note


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
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

  • signaler à un administrateur
    Commentaire de Syruis le 16/11/2004 02:29:30

    Salut tout ton code marche mais il me sort une erreur sur :
    val = double.parseDouble(_txtVal.getText());

    double veut pas ...

    Merci de ton aide...

  • signaler à un administrateur
    Commentaire de Syruis le 16/11/2004 02:33:13

    Je sais que ca fait vraiment nb mais tant pis j'arrive même pas a le lancer avec eclipse et je sais pas si c'est Applet ou application pour l'execution... merci encore.

  • signaler à un administrateur
    Commentaire de Duss le 16/11/2004 17:32:44

    salut, met D et pas d a Double ;)
    pour le lancer tu fais run>as new application et tu lui passe la classe main
    Duss

  • signaler à un administrateur
    Commentaire de thib90000 le 04/08/2006 20:28:01

    pas mal du tout :p

    mais juste un truc qui peu simplifier un peu
    remplace

    Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
             fen.setLocation((screen.width - fen.getSize().width)/2,(screen.height - fen.getSize().height)/2);

    par
    fen.setLocationRelativeTo(null);

    voila
    mais sinon chapeau pour les explication ! les debutant von vite aprendre avec twa !
    a plus

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS