Vous êtes sur la page 1sur 13

PANNEAU CONTROLE

package ihm;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.lang.reflect.Method;

import javax.swing.JButton;

import javax.swing.JLabel;

import javax.swing.JPanel;

import metier.* ;

public class PanneauControle extends JPanel implements ActionListener{

private JLabel lab ;

private Signal sig ;

private PanneauSaisieReel qa ;

private PanneauSaisieReel xa ;

private PanneauSaisieReel ya ;

private PanneauSaisieReel qb ;

private PanneauSaisieReel xb ;

private PanneauSaisieReel yb ;

private PanneauSaisieReel xm ;

private PanneauSaisieReel ym ;
private PanneauSaisieReel v ;

private double tmin = -5.0 ;

private double tmax = +5.0 ;

private double pas = 1.0 ;

public PanneauControle() {

super();

this.setPreferredSize(new Dimension(200,180));

lab = new JLabel("Panneau de Controle") ;

JButton bOk = new JButton("OK");

JButton breinitialiser = new JButton("TOUT REINITIALISER");

sig = new SyntheseDentDeScie( ) ;

qa = new PanneauSaisieReel("qa", false) ;

xa = new PanneauSaisieReel("xa", false) ;

ya = new PanneauSaisieReel("ya", false) ;

qb = new PanneauSaisieReel("qb", false) ;

xb = new PanneauSaisieReel("xb", false) ;

yb = new PanneauSaisieReel("yb", false) ;

xm = new PanneauSaisieReel("xm", false) ;

ym = new PanneauSaisieReel("ym", false) ;

bOk.addActionListener(this);
breinitialiser.addActionListener(this);

this.add(qa);

this.add(xa);

this.add(ya);

this.add(qb);

this.add(xb);

this.add(yb);

this.add(xm);

this.add(ym);

this.add(lab);

this.add(bOk);

this.add(breinitialiser);

FENETRE PRINCIPALE

package ihm;

import java.awt.Dimension;

import javax.swing.JFrame;

/**

*
* Les objets peuvent déclencher des évènements Events.

* Pour gérer les évènements, nous allons mettre en oeuvre des écouteurs

* (Listener).

* <br>

* Lors des étapes précédentes, les panneaux : contrôle, dessin et état étaient

* anonymes.

* <br>

* A la prochaine étape ils vont interagir. Nous allons dès à présent associer

* des noms à leurs instances afin que ces interactions soient possibles.

* @author C. Duclou

* @version 02

*/

public class FenetrePrincipale extends JFrame{

public FenetrePrincipale() {

super() ;

this.setTitle("Projet info");

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setLocation(400, 100);

this.setMinimumSize(new Dimension(800,400));

this.add(new PanneauPrincipal());

this.pack();

this.setVisible(true);

}
PANNEAU PRINCIPAL

package ihm;

import courbe.Courbe;

import java.awt.BorderLayout;

import javax.swing.JPanel;

/**

* @author C. Duclou

* @version 05

*/

public class PanneauPrincipal extends JPanel {

Courbe courbe = null ;

public PanneauPrincipal() {

super();

this.setLayout(new BorderLayout());

PanneauDessin panDessin = new PanneauDessin() ;

courbe = new Courbe() ;

PanneauControle panControle = new PanneauControle() ;


panControle.setCourbe(courbe);

panControle.setPanDessin(panDessin);

this.add(panControle, BorderLayout.WEST);

this.add(panDessin, BorderLayout.CENTER);

PANNEAU SAISIE REELS

package ihm;

import java.awt.Dimension;

import java.awt.GridLayout;

import java.beans.PropertyChangeEvent;

import java.beans.PropertyChangeListener;

import java.text.DecimalFormat;

import java.text.NumberFormat;

import javax.swing.JFormattedTextField;

import javax.swing.JLabel;

import javax.swing.JPanel;

/**

* Cette classe permet d'opérer la saisie d'un nombre réel.

* <br>

* Le résultat de la saisie est stocké dans l'attribut val de la classe.

* <br>
* Cette classe peut être utilisée dans tout programme.

* <br>

* La classe implémente PropertyChangeListener,

* ainsi

* <br>

* lorsque le champ de saisie jft perd le focus,

* <br>

* si son contenu a changé,

* <br>

* alors la méthode propertyChange() est exécutée.

* <br>

* La méthode propertyChange() affecte l'attribut "val".

* <br> dans la version 02, ajout de la mérhode setVat(double)

* @author C. Duclou

* @version 02

*/

public class PanneauSaisieReel extends JPanel implements PropertyChangeListener {

/**

* Variable de stockage de la valeur saisie par l'utilisateur

*/

private double val ;

/**

* Etiquete de la variable saisie

*/

private JLabel lab ;

private final JFormattedTextField jft ;

private final NumberFormat reelFormat;


/**

* @param labTexte le texte de l'étiquette (JLabel) qui sera affichée.

* @param formatScientifique si "true" alors saisie/affichage en notation

* scientifique Sinon saisie/affichage en notation virgule flottante

*/

public PanneauSaisieReel(String labTexte, Boolean formatScientifique) {

super() ;

this.val = 0.0 ;

lab = new JLabel(labTexte) ;

if(formatScientifique){

reelFormat = new DecimalFormat("0.#E0");

} else{

reelFormat = new DecimalFormat();

reelFormat.setMinimumFractionDigits(2);

jft = new JFormattedTextField(reelFormat) ;

jft.setColumns(30);

jft.setValue(this.val);

/**

* associe la méthode propertyChange() définie plus ci-dessous

* à l'écouteur PropertyChangeListener : un changement de contenu

* du champ jft, déclenche l'exécution de propertyChange()

*/

jft.addPropertyChangeListener("value", this);

this.setLayout(new GridLayout(0,2)) ; // 2 colonnes


this.setPreferredSize(new Dimension(200,20));

this.add(lab);

this.add(jft);

/**

* @return la valeur saisie, un nombre réel

*/

public double getVal() {

return this.val;

/**

* @param val est affectée à la valeur

*/

public void setVal(double val) {

this.val = val ;

jft.setText(""+val);

/**

* Action executée lors de la modification du champ de saisie

* @param e evènement ayant déclenché l'action dans le panneau,

* dans le cas présent ça ne peut être qu'une

* une modification du champ "jft" qui est le seul associé à l'écouteur

* PropertyChangeListener

*/
@Override

public void propertyChange(PropertyChangeEvent e) {

// récupèreation de la valeur saisie dans l'attribut val

val = (((Number)jft.getValue()).doubleValue() );

// mise à jour du champ de saisie

jft.setText(String.format("%0,2f", val));

// affichage de la valeur saisie dans la console

System.out.format("PanReel propertyChange :\n\tthis.val saisie (%s) = %g\n",

lab.getText(), val) ;

GENCOURBE

package courbe;

/**

* @author C. Duclou

* @version 01

*/

public interface GenCourbe {

/**

* la méthode genCourbe doit produire une liste de coordonnées

* de points qui sont enregistrés dans une Courbe.

* Cette version calcul le pas d'incrément en fonctiond de la fréquence et

* fixe les bornes de l'intervalle de l'échantillon

*
* @param courbe la courbe à affecter

*/

public void GenCourbe(Courbe courbe) ;

COURBE

package courbe;

/**

* @author C. Duclou

* @version 01

*/

public interface GenCourbe {

/**

* la méthode genCourbe doit produire une liste de coordonnées

* de points qui sont enregistrés dans une Courbe.

* Cette version calcul le pas d'incrément en fonctiond de la fréquence et

* fixe les bornes de l'intervalle de l'échantillon

* @param courbe la courbe à affecter

*/

public void GenCourbe(Courbe courbe) ;

}
COORDONNEES

package courbe;

/**

* La classe Coordonnees donne un objet qui enregistre un point du plan ℝ x ℝ

* @author C. Duclou

* @version 01

*/

public class Coordonnees {

/**

* abscisse du point

*/

private double x ;

/**

* ordonnée du point

*/

private double y ;

public Coordonnees(double x, double y) {

this.x = x;

this.y = y;

/**

* @return abscisse du point

*/

public double getX() {


return x;

/**

* @return ordonnée du point

*/

public double getY() {

return y;

Vous aimerez peut-être aussi