Aller au menu - Aller au contenu

Icône TP : Le penduZ

Mise à jour : 12/02/2010
Difficulté : Difficile Difficile Creative Commons BY-NC-SA
96 702 visites depuis 7 jours, dont 505 sur ce chapitre classé 4/786
Ce TP va sûrement être le plus difficile que vous ayez fait jusqu'à présent !
Il fait appel à énormément de choses, et surtout à de la logique.

Par contre, la solution que je vous apporte utilise des design patterns : je vous conseille donc de lire les quatre premiers chapitres de cette partie avant de commencer.

Bon, voyons voir à quelle sauce je vais vous manger ! :diable:
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Cahier des charges

Vous devez faire un jeu du pendu en Java évènementiel avec sauvegarde des 10 meilleurs scores !
Toutefois, j'ai des exigences :
  • l'application devra avoir les menus : Nouveau, Scores, Règles, À propos ;
  • une page d'accueil devra être mise en place ;
  • les points devront être cumulés sur le total des mots trouvés et selon les erreurs commises ;
  • il faudra aller vérifier si le joueur est dans le top 10, le cas échéant, on lui demande son pseudo, on enregistre et on redirige vers la page des scores ;
  • si le joueur n'a pas assez de points, on redirige vers la page d'accueil ;
  • il faudra essayer d'utiliser au moins le pattern observer !


Voici les règles du jeu :

Image utilisateur


Et voici les écrans que j'ai obtenus :



Je vous donne aussi les images que j'ai utilisées pour faire le pendu :



Vous aurez aussi besoin du fichier que nous avons utilisé dans les chapitres précédents : vous savez, le fichier contenant plein de mots en français. Pour ceux qui l'auraient déjà effacé : c'est par là !

Il me reste encore quelques recommandations...

Prérequis

Vous allez devoir utiliser les flux afin de parcourir le fichier texte...
Il y a plus de 336000 lignes dedans, vous pouvez donc choisir un chiffre aléatoire entre 0 et 336000 et aller récupérer le mot choisi !
Pour avoir un chiffre aléatoire entre 0 et 336529, j'ai fait ceci :
Code : Java
1
2
3
4
int i = (int)(Math.random() * 100000);
while(i > 336529){
  i /= 2;
}


Mais vous pouvez aussi faire comme ceci :

Code : Java
1
int nbre = (int)(Math.random()*336529);


Pour récupérer les mots par ligne, j'ai utilisé un LineNumberReader : vu que cet objet nous retourne le numéro de la ligne en invoquant la méthode getLineNumber() , cet objet était tout indiqué ! ;)

Il y a aussi un point qui devrait vous poser problème : la mise à jour de JPanel.
J'ai fait comme ceci : j'ai tout retiré de mon conteneur avec la méthode removeAll() , j'y ai remis des composants et invoqué la méthode revalidate() afin de modifier l'affichage !

Il va également falloir que vous pensiez à gérer les caractères accentués lorsque vous cliquerez sur le bouton 'E' par exemple, vous devrez aussi afficher les lettres 'E' accentuées... :waw:

Je ne vais pas tout vous dire... ce serait dommage...

Par contre, j'insiste sur le fait que c'est un TP difficile, et il vous faudra sûrement plusieurs heures avant d'en venir à bout !
Prenez donc le temps de poser les problèmes, réfléchissez bien, et codez bien !

Juste pour être bien sûr que vous ayez compris : je vous conseille vivement d'aller lire les chapitres sur les design patterns : j'en ai utilisé, et en plus, j'ai rangé mes classes en packages...
Ne vous inquiétez pas, tout est expliqué dans un des chapitres sur les DP...

Allez, en avant les zéros !

Correction

Une fois n'est pas coutume, je ne vais pas mettre tous les codes source ici, je vais vous founir tout mon projet Eclipse avec un .jar exécutable !
Et pour cause, j'ai beaucoup de classes :

Image utilisateur


Voici donc une astuce d'Eclipse afin de rapatrier un projet.

Une fois Eclipse ouvert, faite un clic droit dans la zone où se trouvent vos projets et faites "import" ; choisissez "Existing project" dans "General" :

Image utilisateur


Il ne vous reste plus qu'à spécifier l'endroit où vous avez décompressé cette archive.

Une fois décompressé, vous devriez pouvoir lancer le fichier .jar en double cliquant dessus !
Si rien ne se passe, mettez à jour vos variables d'environnement (cf première partie du tuto).


Vous devriez être capables de comprendre ce code sans souci !
Avec les progrès en Java que vous venez de faire, c'est du gâteau... :-°

Je reste à disposition par MP pour toute précision !
Je vous avais prévenus que celui-ci serait difficile !
Mais admettez que vous devez être contents de vous...

Bon, je vous conseille de faire un 'tite pause.
N'allez pas faire surchauffer vos méninges...

Dès que vous êtes prêts, on part pour : Gérez vos conteneurs.
Chapitre précédent Sommaire Chapitre suivant

Partager

16 commentaires pour "TP : Le penduZ"
Note moyenne : 3.57 / 4 (1025 votes)
Pseudo Commentaire
Hors ligne dgehell # Posté le 04/11/2009 à 15:47:11

Bonjour.
Un TP où on s'aperçoit qu'entre comprendre et écrire, il y a un monde quand on découvre tout (package, emploi des classes, ...).

L'exéction du code ne donne pas le même rendu selon que la dernière bonne lettre cliquée est une voyelle (tableau) ou une consonne (scalaire) : on passe dans 2 parties de code différentes pour traiter public void assign(char[] c) ou public void assign(char c) dans Model.java. Il y a une mise à jour écran qui ne s'effectue pas. A mon avis le bon code est, parce qu'il fonctionne bien :

this.nombreMot++;
this.restartObserver();
}
//else
this.notifyObserver();

J'ai vu ce problème quand j'ai renvoyé le traitement du scalaire sur le traitement du tableau pour n'avoir qu'un code.

Autre point de détail, si on espionne le mot à trouver lors de sa création, avec le premier appel à un nouveau mot, on a le mot issu de l'ouverture de l'appli et non le mot dernièrement calculé. Un println bien placé permet de bien le voir. Pour l'instant je n'ai pas vu le mécanisme de cet "oubli".

Si quelqu'un a une idée...
Hors ligne Satch33 # Posté le 12/05/2010 à 15:11:40
Avatar

Waow ! Quel bon TP !
Bien long, ya de tout, et en prime on a un super jeu trop dur :p
J'espère le finir un jour xD
Hors ligne lebossejames # Posté le 22/05/2010 à 10:15:07

je n'ai pas compris à quoi sert les classes controler et assign??

surtout ces lignes :

Code : Java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public void control(char c){
            
            if (c == 'E'){
            	char tab[] = {'?', '?' , '?' , '?', c};
            	this.model.assign(tab);
            }                     

            else if (c == 'A'){
            	char tab[] = {'?', '?' , '?', c};
            	this.model.assign(tab);
            }                  

            else if(c == 'I') {
            	char tab[] = {'?', '?', c };
            	this.model.assign(tab);
            }

            else if (c == 'O') {
            	char tab[] = {'?', '?', c };
            	this.model.assign(tab);
            }
            else if (c == 'U'){
            	char tab[] = {'?', '?', c };
            	this.model.assign(tab);
            }

            else if (c == 'C'){
            	char tab[] = {'?', c };
            	this.model.assign(tab);
            }
            
            else
            	this.model.assign(c);
   }
Hors ligne mwenmwen # Posté le 23/01/2011 à 18:29:49

Bonjour, j'ai téléchargé le fichier .zip mais je n'ai pas tous les documents.
Le fichier est quasiment vide.
Est- il possible d'avoir le bon fichier?

Merci bien
Hors ligne artistou # Posté le 01/02/2011 à 12:42:09

Bonjour a tous j ai realise une application selon le model MVC
dans la partie vue j ai mis un Menubar contenant des jmenu ensuite j ai lie chaque jmenu a sa propre classe(contenant une methode getpanel() ) pour l afficher ensuite dans la Fenetre a travers cette methode mon probleme c ke lors de l affichage de la classe CalculPanel j ai eu des problemes d affichage puisque j ai utilise des Jsplit est ce que kelkun peut m aider Svp

VOICI LES DEUX CLASSES

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JColorChooser;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import Model.Model;
import Observer.Observable;
import Control.Control;
import Model.ObjectData;
import Observer.Observer;

public class Fenetre extends JFrame implements Observer {
DefaultTableModel tmn =null;
PnlChart pnlChart=new PnlChart();
private Dimension size;
private Observable model;
private JPanel conteneur = new JPanel();

public Fenetre(Observable obs){

this.setLocationRelativeTo(null);
this.setTitle("AEBT SOFTWARE");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(850, 800);
this.setResizable(false);

this.model = obs;
this.model.addObserver(this);
this.size = new Dimension(this.getWidth(), this.getHeight());
this.conteneur.setPreferredSize(this.size );
this.setContentPane(this.conteneur);
createMenu();
this.conteneur.add(new AccueilPanel(this.size).getPanel());


}


private void createMenu()
{
ActionsColors actions = new ActionsColors();
JMenuBar mBar = new JMenuBar();
setJMenuBar( mBar );
JMenu file = new JMenu( "File" );
mBar.add( file );
JMenuItem New = new JMenuItem( "New" );
New.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
conteneur.removeAll();
CalculPanel gp = new CalculPanel(size, model);
model.addObserver(gp);
conteneur.add(gp.getPanel(), BorderLayout.CENTER);
conteneur.revalidate();
initModel();
}
});
file.add( New );
JMenuItem save = new JMenuItem( "Save" );
file.add( save );
JMenuItem print = new JMenuItem( "Print" );
file.add( print );
JMenuItem exit = new JMenuItem( "Exit" );
exit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
file.add( exit );

// creation des chex box
JMenu jm = new JMenu( "Options" );
mBar.add( jm );
JCheckBoxMenuItem chkItm = new JCheckBoxMenuItem( "Coords sur la souris" );
chkItm.setActionCommand( "onMouse" );
chkItm.addActionListener( actions );
chkItm.setSelected( pnlChart.isBubleOnMouse() );
jm.add( chkItm );
chkItm = new JCheckBoxMenuItem( "Affiche les coords" );
chkItm.setActionCommand( "coords" );
chkItm.addActionListener( actions );
chkItm.setSelected( pnlChart.isUseBuble() );
jm.add( chkItm );
chkItm = new JCheckBoxMenuItem( "Affiche les Points" );
chkItm.setActionCommand( "node" );
chkItm.addActionListener( actions );
chkItm.setSelected( pnlChart.isShowNode() );
jm.add( chkItm );
chkItm = new JCheckBoxMenuItem( "Affiche la croix" );
chkItm.setActionCommand( "cross" );
chkItm.addActionListener( actions );
chkItm.setSelected( pnlChart.isUseMouseCross() );
jm.add( chkItm );
chkItm = new JCheckBoxMenuItem( "Points sur courbe" );
chkItm.setActionCommand( "onLine" );
chkItm.addActionListener( actions );
chkItm.setSelected( pnlChart.isNodeOnLine() );
jm.add( chkItm );
// creation des menu items couleur

jm = new JMenu( "Couleurs" );
mBar.add( jm );
JMenuItem mit = new JMenuItem( "Courbe" );
mit.setActionCommand( "courbe" );
mit.addActionListener( actions );
jm.add( mit );
mit = new JMenuItem( "Coords" );
mit.setActionCommand( "coords" );
mit.addActionListener( actions );
jm.add( mit );
mit = new JMenuItem( "Points" );
mit.setActionCommand( "node" );
mit.addActionListener( actions );
jm.add( mit );
mit = new JMenuItem( "Axes" );
mit.setActionCommand( "axes" );
mit.addActionListener( actions );
jm.add( mit );
mit = new JMenuItem( "Croix" );
mit.setActionCommand( "cross" );
mit.addActionListener( actions );
jm.add( mit );

JMenu help = new JMenu( "Help" );
mBar.add( help );
JMenuItem aide = new JMenuItem( "Help ??" );
aide.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
ImageIcon img = new ImageIcon("Picture/Aebt.PNG");

JOptionPane.showMessageDialog(null,
"Créateur: Alaeddine Boubaker.\nEncadreur:Mister David Flinspach (Aebt)" +
".\nLicense: Freeware.\nCopyright: ala.boubaker@gmail.com",
"Information", JOptionPane.NO_OPTION,img);
}
});
help.add( aide );
JMenuItem about = new JMenuItem( "About" );
about.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{


JOptionPane.showMessageDialog(null,
"Créateur: Alaeddine Boubaker.\nEncadreur:Mister David Flinspach (Aebt)" +
".\nLicense: Freeware.\nCopyright: ala.boubaker@gmail.com",
"Information", JOptionPane.NO_OPTION);
}
});
help.add( about );

}
class ActionsColors implements ActionListener
{
public void actionPerformed( ActionEvent e )
{
String action = e.getActionCommand();
if ( action.equals( "courbe" ) )
pnlChart.setColorLine( getColor( "de la courbe. ", pnlChart.getColorLine() ) );
else if ( action.equals( "coords" ) )
pnlChart.setColorText( getColor( "du text. ", pnlChart.getColorText() ) );
else if ( action.equals( "node" ) )
pnlChart.setColorNode( getColor( "des points. ", pnlChart.getColorNode() ) );
else if ( action.equals( "axes" ) )
pnlChart.setColorAxes( getColor( "des axes. ", pnlChart.getColorAxes() ) );
else if ( action.equals( "cross" ) )
pnlChart.setColorCross( getColor( "de la croix. ", pnlChart.getColorCross() ) );

pnlChart.fireTriggerDraw();
pnlChart.repaint();
}
}

private Color getColor( String titre, Color col )
{
return JColorChooser.showDialog( this, "Choix de la couleur " + titre, col );
}

class ActionsFlags implements ActionListener
{
public void actionPerformed( ActionEvent e )
{
String action = e.getActionCommand();
JCheckBoxMenuItem source = (JCheckBoxMenuItem)e.getSource();
if ( action.equals( "node" ) )
pnlChart.setShowNode( source.isSelected() );
else if ( action.equals( "onMouse" ) )
pnlChart.setBubleOnMouse( source.isSelected() );
else if ( action.equals( "coords" ) )
pnlChart.setUseBuble( source.isSelected() );
else if ( action.equals( "cross" ) )
pnlChart.setUseMouseCross( source.isSelected() );
else if ( action.equals( "onLine" ) )
pnlChart.setNodeOnLine( source.isSelected() );
pnlChart.fireTriggerDraw();
pnlChart.repaint();
}
}

@Override
public void update(String λsmax, String qsmax, String qamax, String qbmax,
ArrayList<ObjectData> list, int i) {
// TODO Auto-generated method stub

}


@Override
public void updateThrb(String valueOf) {
// TODO Auto-generated method stub

}


@Override
public void updateThra(String valueOf) {
// TODO Auto-generated method stub

}
private void initModel(){
this.model = new Model();
this.model.addObserver(this);
}

}
la 2eme classe

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

import Control.Control;
import Model.Model;
import Model.ObjectData;
import Observer.Observable;
import Observer.Observer;

public class CalculPanel extends ZContainer implements Observer{
private Dimension dimension = new Dimension();
private Control control;
DefaultTableModel tmn =null;
PnlChart pnlChart=new PnlChart();

//On déclare notre objet JTextPane
private JTextArea textPane = new JTextArea();
//L'objet qui va gérer le scroll
//En lui passant un objet JComponent dans le constructeur
private JScrollPane scroll = new JScrollPane(textPane);

//Vous êtes habitués à cette classe, maintenant... ;)
//On déclare notre objet JSplitPane
private JSplitPane split, split2, split3;
private JPanel pan,pan2,pan3,pan4;

private JTextField &#955;s,&#955;a,&#955;b,DTA,DTB,THRS,THRA,THRB,QA,QB,QMAX,&#955;max;
private JLabel ALabel, BLabel, DTALabel, DTBLabel,thraLabel,thrbLabel
,thrsLabel,&#955;sLabel, portlabel, syslabel,QaLabel,QbLabel,TestLabel,QmaxLabel,&#955;maxLabel;
private JComboBox port;
private JCheckBox sys;



public CalculPanel(Dimension dim, Observable mod) {
super(dim);
this.control = new Control(mod);
initPanel();
}

protected void initPanel() {
//On crée deux conteneurs de couleurs différentes
pan = new JPanel();

pan2 = new JPanel();

pan3 = new JPanel();

pan4 = new JPanel();


//&#955;
JPanel pan&#955; = new JPanel();
pan&#955;.setBackground(Color.white);
pan&#955;.setPreferredSize(new Dimension(400, 70));
pan&#955;.setBorder(BorderFactory.createTitledBorder("&#955; value"));
&#955;a = new JTextField();
&#955;a.setPreferredSize(new Dimension(100, 25));
ALabel = new JLabel("&#955;a [1/h]");
&#955;b = new JTextField();
&#955;b.setPreferredSize(new Dimension(100, 25));
BLabel = new JLabel("&#955;b [1/h]");
pan&#955;.add(ALabel);
pan&#955;.add(&#955;a);
pan&#955;.add(BLabel);
pan&#955;.add(&#955;b);
pan.add(pan&#955;);

//DT
JPanel pandt = new JPanel();
pandt.setBackground(Color.white);
pandt.setPreferredSize(new Dimension(400, 70));
pandt.setBorder(BorderFactory.createTitledBorder(" DT value"));
DTA = new JTextField();
DTA.setPreferredSize(new Dimension(100, 25));
DTALabel= new JLabel("DTA [h]");
DTB = new JTextField();
DTB.setPreferredSize(new Dimension(100, 25));
DTBLabel = new JLabel("DTB [h]");
pandt.add(DTALabel);
pandt.add(DTA);
pandt.add(DTBLabel);
pandt.add(DTB);
pan.add(pandt);



//PORT
JPanel panport = new JPanel();
panport.setBackground(Color.white);
panport.setPreferredSize(new Dimension(400, 70));
panport.setBorder(BorderFactory.createTitledBorder("Port"));
THRS = new JTextField();
THRS.setPreferredSize(new Dimension(100, 25));
thrsLabel= new JLabel("THRS [1/h]");
port= new JComboBox();
port.addItem("AND");
port.addItem("OR");
portlabel=new JLabel("Port");
panport.add(portlabel);
panport.add(port);
panport.add(thrsLabel);
panport.add(THRS);
pan.add(panport);

//THR et &#955;
JPanel panTh&#955;4 = new JPanel();
panTh&#955;4.setBackground(Color.white);
panTh&#955;4.setPreferredSize(new Dimension(400, 70));
panTh&#955;4.setBorder(BorderFactory.createTitledBorder(" &#955;S"));
&#955;s = new JTextField();
&#955;s.setPreferredSize(new Dimension(100, 25));
&#955;sLabel = new JLabel("&#955;s(max)");
QMAX = new JTextField();
QMAX.setPreferredSize(new Dimension(100, 25));
QmaxLabel= new JLabel("QMAX(S) [1]");
panTh&#955;4.add(&#955;sLabel);
panTh&#955;4.add(&#955;s);
panTh&#955;4.add(QmaxLabel);
panTh&#955;4.add(QMAX);
pan4.add(panTh&#955;4);
//Q
JPanel panQ = new JPanel();
panQ.setBackground(Color.white);
panQ.setPreferredSize(new Dimension(400, 80));
panQ.setBorder(BorderFactory.createTitledBorder(" QMAX values"));
QA = new JTextField();
QA.setPreferredSize(new Dimension(100, 25));
QaLabel= new JLabel("QMAX(A) [1]");
QB = new JTextField();
QB.setPreferredSize(new Dimension(100, 25));
QbLabel = new JLabel("QMAX(B) [1]");
panQ.add(QaLabel);
panQ.add(QA);
panQ.add(QbLabel);
panQ.add(QB);
pan4.add(panQ);
//THR
JPanel panThr = new JPanel();
panThr.setBackground(Color.white);
panThr.setPreferredSize(new Dimension(400, 70));
panThr.setBorder(BorderFactory.createTitledBorder(" THR values"));
THRA = new JTextField();
THRA.setPreferredSize(new Dimension(100, 25));
thraLabel= new JLabel("THRA [1/h]");
THRB = new JTextField();
THRB.setPreferredSize(new Dimension(100, 25));
thrbLabel = new JLabel("THRB [1/h]");
panThr.add(thraLabel);
panThr.add(THRA);
panThr.add(thrbLabel);
panThr.add(THRB);
pan4.add(panThr);



// controlPan1
JPanel controlPan1 = new JPanel();
JButton calculBouton = new JButton("calcul &#955;max ");
calculBouton.addActionListener(new CalculListener());
JButton ThraBouton = new JButton("calcul THRA");
ThraBouton.addActionListener(new ThraListener ());
JButton ThrbBouton = new JButton("calcul THRB");
ThrbBouton.addActionListener(new ThrbListener ());
controlPan1.add(calculBouton);
controlPan1.add(ThraBouton);
controlPan1.add(ThrbBouton);
pan.add(controlPan1);


//On construit enfin notre séparateur
split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, pan, pan4);
//On place le séparateur
split.setDividerLocation(400);
split2 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, pan3, pan2);
//On place le séparateur
split2.setDividerLocation(400);
//On passe les deux précédents JSplitPane à celui-ci
split3 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, split, split2);
//On place le séparateur
split3.setDividerLocation(270);

//On le passe ensuite au contentPane de notre objet Fenetre
//placé au centre pour qu'il utilise tout l'espace disponible
this.panel.add(split3,BorderLayout.CENTER);

}
public JSplitPane getSplit3() {
return split3;
}
class CalculListener implements ActionListener {

@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(&#955;a.getText()!=""&&&#955;b.getText()!=""&&DTA.getText()!=""&&DTB.getText()!="")
control.control1(&#955;a.getText(),&#955;b.getText(),DTA.getText(),DTB.getText());
else
{
JOptionPane.showMessageDialog(null, "please check your input Value ", "Information", JOptionPane.NO_OPTION);
}

}
}
class ThraListener implements ActionListener {

@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(&#955;b.getText()!=""&&DTA.getText()!=""&&DTB.getText()!=""&&THRS.getText()!="")
control.control3(&#955;b.getText(),DTA.getText(),DTB.getText(),THRS.getText());
else
{

JOptionPane.showMessageDialog(null, "please check your input Value ", "Information", JOptionPane.NO_OPTION);
}

}

}
class ThrbListener implements ActionListener {

@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(&#955;a.getText()!=""&&DTA.getText()!=""&&DTB.getText()!=""&&THRS.getText()!="")
control.control2(&#955;a.getText(),DTA.getText(),DTB.getText(),THRS.getText());
else
{
JOptionPane.showMessageDialog(null, "please check your input Value ", "Information", JOptionPane.NO_OPTION);
}

}

}

public void update(String &#955;smax, String qsmax, String qamax, String qbmax,ArrayList <ObjectData> list,int l)
{
// TODO Auto-generated method stub

&#955;s.setText(&#955;smax);
QMAX.setText(qsmax);
QA.setText(qamax);
QB.setText(qbmax);
// Jtable
JScrollPane sclp =new JScrollPane();
sclp.setPreferredSize(new Dimension(400,470));
JTable table=new JTable();
tmn=new DefaultTableModel();
table.setModel(tmn);
tmn.addColumn("T");
tmn.addColumn("QA");
tmn.addColumn("QB");
tmn.addColumn("QS");
tmn.addColumn("&#955;S");
for(ObjectData com :list)
{
Object[] vals={new Double(com.getT()),new Double(com.getQa()),new Double(com.getQb()),new Double(com.getQs()),new Double(com.get&#923;s())
};
tmn.addRow(vals);
}
sclp.getViewport().add(table);
pan3.add(sclp);
pan3.revalidate();
pnlChart = new PnlChart();
pnlChart.setTable(table);
pnlChart.setPreferredSize(new Dimension(400,470));
pan2.add(pnlChart);
pan2.revalidate();


}



@Override
public void updateThrb(String Qb) {
// TODO Auto-generated method stub
THRB.setText(Qb);
}
public void updateThra(String Qa) {
// TODO Auto-generated method stub
THRA.setText(Qa);
}

}

Voir tous les commentaires