Télécharger le fichier - Fichier

publicité
Université Ibn Zohr
Faculté des Sciences
FILIERE : SMI& LP2I
MODULE : IHM /JAVA AVANCE
SERIE N°1 IHM
NOTE !! API UTILISE DANS CETTE SERIE EST SWING
EXERCICE 1
Pour des questions de santé On recommande que la nourriture que vous mangez ait moins de 30%
de ses calories totales provenant de la graisse. Développez une application avec interface graphique
qui calcule le pourcentage de calories qui proviennent de graisse, pour cela il faut savoir le nombre de
grammes de graisse et le nombre des calories provenant de la nourriture utilisée. Sachant que La
graisse contient 9 calories par gramme.
Entrée :
¾
Calories servit dans la nourriture
¾
Quantité de graisse servit.
Calcule : percent = ( (fat * 9) / calories ) * 100
Sortie : Pourcentage de calorie provenant de la graisse.
Combien de composant qui seront utilisées dansGUI?
Quelles seront les composants reliées au listener?
Ecrire un programme implémentant une interface de la figure dessous
Démarche
1- Suggérez une disposition des panneaux pour
créer cet interface de l'utilisateur
2- Ecrire un programme Java réalisant cet
interface
IMPORT JAVA.AWT.* ;
IMPORT JAVA.AWT.EVENT.*;
IMPORT JAVAX.SWING.*;
PUBLIC CLASS PERCENTFAT EXTENDS JFRAME IMPLEMENTS ACTIONLISTENER
{
= NEW JLABEL("PERCENT OF CALORIES FROM FAT");
JLABEL TITLE
JLABEL FATLABEL = NEW JLABEL("ENTER GRAMS OF FAT: ");
JLABEL CALLABEL = NEW JLABEL("ENTER TOTAL CALORIES: ");
JLABEL PERLABEL = NEW JLABEL("PERCENT CALORIES FROM FAT: ");
JTEXTFIELD INFAT = NEW JTEXTFIELD( 7 );
JTEXTFIELD INCAL = NEW JTEXTFIELD( 7 );
JTEXTFIELD OUTPER = NEW JTEXTFIELD( 7 );
JBUTTON
DOIT
= NEW JBUTTON("DO IT!");
INT CALORIES ; // INPUT: TOTAL CALORIES PER SERVING
INT FATGRAMS ; // INPUT: GRAMS OF FAT PER SERVING
DOUBLE PERCENT; // RESULT: PERCENT OF CALORIES FROM FAT
PUBLIC PERCENTFAT()
{
SETTITLE( "CALORIES FROM FAT" );
GETCONTENTPANE().SETLAYOUT( NEW FLOWLAYOUT() );
GETCONTENTPANE().ADD( TITLE );
GETCONTENTPANE().ADD( FATLABEL );
GETCONTENTPANE().ADD( INFAT );
GETCONTENTPANE().ADD( CALLABEL );
GETCONTENTPANE().ADD( INCAL );
GETCONTENTPANE().ADD( PERLABEL );
GETCONTENTPANE().ADD( OUTPER );
OUTPER.SETEDITABLE( FALSE );
}
GETCONTENTPANE().ADD( DOIT );
DOIT.ADDACTIONLISTENER( THIS );
// THE APPLICATION
PUBLIC VOID CALCPERCENT( )
{
PERCENT = ( (FATGRAMS * 9.0) / CALORIES ) * 100.0 ;
}
PUBLIC VOID ACTIONPERFORMED( ACTIONEVENT EVT)
{
STRING USERIN ;
USERIN
= INFAT.GETTEXT() ;
FATGRAMS = INTEGER.PARSEINT( USERIN ) ;
USERIN
= INCAL.GETTEXT() ;
CALORIES = INTEGER.PARSEINT( USERIN ) ;
CALCPERCENT() ;
}
OUTPER.SETTEXT( (PERCENT+"
REPAINT();
").SUBSTRING(0,6) );
PUBLIC STATIC VOID MAIN ( STRING[] ARGS )
{
PERCENTFAT FATAPP = NEW PERCENTFAT() ;
}
}
WINDOWQUITTER WQUIT = NEW WINDOWQUITTER();
FATAPP.ADDWINDOWLISTENER( WQUIT );
FATAPP.SETSIZE( 280, 200 );
FATAPP.SETVISIBLE( TRUE );
CLASS WINDOWQUITTER EXTENDS WINDOWADAPTER
{
PUBLIC VOID WINDOWCLOSING( WINDOWEVENT E )
2
}
{
SYSTEM.EXIT( 0 );
}
EXERCICE 2
Soit une application qui calcule le poids idéal d'une personne (en pounds) à partir de son genre et sa
hauteur (en pouces).L'interface graphique utilise des boutons radio. Le code suivants montre comment
créer un groupe bouton et comment lui intégré les boutons radio ainsi créer.
Les boutons radio produisent des événements, comme le font les boutons normaux. Une application
complète exige un listener pour réponde aux actions sur les boutons radios. Pour cela il faut utilisez
le méthode setActionCommand () pour assigner une commande à chaque bouton radio, et la méthode
getActionCommand () dans listener pour déterminer quel bouton a été activé.
1- Combien de groupes bouton sont utilisés dans
cet interface graphique?
2- Ecrire un programme Java réalisant cette
interface
3- Utilisez la stratégie d’emplacements de
BorderLayout suivante pour réliser l’interface
IMPORT JAVA.AWT.*;
IMPORT JAVA.AWT.EVENT.*;
IMPORT JAVAX.SWING.*;
PUBLIC CLASS IDEALWEIGHT EXTENDS JFRAME IMPLEMENTS ACTIONLISTENER
{
JLABEL LBL1;
JLABEL LBL2;
JLABEL LBL3;
JRADIOBUTTON RBM;//RADIO BUTTON MALE
JRADIOBUTTON RBF;
JRADIOBUTTON RBH1;//RADIO BUTTON HEIGHT 1
JRADIOBUTTON RBH2;
JRADIOBUTTON RBH3;
JRADIOBUTTON RBH4;
JRADIOBUTTON RBH5;
JTEXTFIELD OUTW;//OUT WEIGHT
BUTTONGROUP GENDER;
BUTTONGROUP HEIGHT;
JPANEL GENPANEL;
JPANEL HPANEL;
JPANEL WPANEL;
PUBLIC IDEALWEIGHT()
{
LBL1 = NEW JLABEL ( "YOUR GENDER" );
RBM = NEW JRADIOBUTTON("MALE",TRUE) ;
RBF = NEW JRADIOBUTTON("FEMALE",FALSE);
GENDER = NEW BUTTONGROUP();
LBL2 = NEW JLABEL ( "YOUR HEIGHT" );
RBH1 = NEW JRADIOBUTTON("60 TO 64 INCHES",TRUE) ;
RBH2 = NEW JRADIOBUTTON("64 TO 68 INCHES",FALSE) ;
RBH3 = NEW JRADIOBUTTON("68 TO 72 INCHES",FALSE) ;
RBH4 = NEW JRADIOBUTTON("72 TO 76 INCHES",FALSE) ;
RBH5 = NEW JRADIOBUTTON("76 TO 80 INCHES",FALSE) ;
HEIGHT = NEW BUTTONGROUP();
3
LBL3 = NEW JLABEL ( "IDEAL WEIGHT" );
OUTW = NEW JTEXTFIELD (15);
JPANEL GENPANEL = NEW JPANEL();
JPANEL HPANEL = NEW JPANEL();
JPANEL WPANEL = NEW JPANEL();
RBF.ADDACTIONLISTENER( THIS );
RBM.ADDACTIONLISTENER( THIS );
RBH1.ADDACTIONLISTENER( THIS );
RBH2.ADDACTIONLISTENER( THIS );
RBH3.ADDACTIONLISTENER( THIS );
RBH4.ADDACTIONLISTENER( THIS );
RBH5.ADDACTIONLISTENER( THIS );
RBM.SETACTIONCOMMAND("M");
RBF.SETACTIONCOMMAND("F");
RBH1.SETACTIONCOMMAND("H1");
RBH2.SETACTIONCOMMAND("H2");
RBH3.SETACTIONCOMMAND("H3");
RBH4.SETACTIONCOMMAND("H4");
RBH5.SETACTIONCOMMAND("H5");
GETCONTENTPANE().SETLAYOUT( NEW BORDERLAYOUT() );
GENDER.ADD(RBM);
GENDER.ADD(RBF);
GENPANEL.ADD(LBL1);
GENPANEL.ADD(RBM);
GENPANEL.ADD(RBF);
HPANEL.ADD(LBL2);
HEIGHT.ADD(RBH1);
HEIGHT.ADD(RBH2);
HEIGHT.ADD(RBH3);
HEIGHT.ADD(RBH4);
HEIGHT.ADD(RBH5);
HPANEL.ADD(RBH1);
HPANEL.ADD(RBH2);
HPANEL.ADD(RBH3);
HPANEL.ADD(RBH4);
HPANEL.ADD(RBH5);
WPANEL.ADD(LBL3);
WPANEL.ADD(OUTW);
GETCONTENTPANE().ADD(
GETCONTENTPANE().ADD(
GETCONTENTPANE().ADD(
GENPANEL, BORDERLAYOUT.WEST );
HPANEL, BORDERLAYOUT.EAST );
WPANEL, BORDERLAYOUT.SOUTH );
GENPANEL.SETLAYOUT(
NEW BOXLAYOUT( GENPANEL, BOXLAYOUT.Y_AXIS ) );
HPANEL.SETLAYOUT(
NEW BOXLAYOUT( HPANEL, BOXLAYOUT.Y_AXIS ) );
OUTW.SETEDITABLE(FALSE);
}
PUBLIC VOID ACTIONPERFORMED( ACTIONEVENT EVT)
{ INT H=0;
DOUBLE W=0;
//HEIGHT.GETSELECTION().GETACTIONCOMMAND();
IF(HEIGHT.GETSELECTION().GETACTIONCOMMAND().EQUALS("H1"))
H=60;
IF(HEIGHT.GETSELECTION().GETACTIONCOMMAND().EQUALS("H2"))
H=64;
IF(HEIGHT.GETSELECTION().GETACTIONCOMMAND().EQUALS("H3"))
H=68;
IF(HEIGHT.GETSELECTION().GETACTIONCOMMAND().EQUALS("H4"))
H=72;
4
IF(HEIGHT.GETSELECTION().GETACTIONCOMMAND().EQUALS("H5"))
H=76;
//GENDER.GETSELECTION().GETACTIONCOMMAND();
IF(GENDER.GETSELECTION().GETACTIONCOMMAND().EQUALS("M"))
W=(H*H)/30.0;
IF(GENDER.GETSELECTION().GETACTIONCOMMAND().EQUALS("F"))
W=(H*H)/28.0;
OUTW.SETTEXT(" "+W);
REPAINT();
}
PUBLIC STATIC VOID MAIN ( STRING[] ARGS )
{ IDEALWEIGHT FRM = NEW IDEALWEIGHT();
WINDOWQUITTER WQUIT = NEW WINDOWQUITTER();
FRM.ADDWINDOWLISTENER( WQUIT );
FRM.SETSIZE( 350, 200 );
FRM.SETRESIZABLE(FALSE);//POUR NE PA REDIMENSIONNER LA FENETRE
FRM.SETVISIBLE( TRUE ); }
}
CLASS WINDOWQUITTER EXTENDS WINDOWADAPTER
{ PUBLIC VOID WINDOWCLOSING( WINDOWEVENT E )
{
SYSTEM.EXIT( 0 ); }}
}
EXERCICE 4
On souhaite Ecrire un programme Java effectuant la conversion le dirhams en diverses devise :
Dollars, Franc Swiss, Franc Belge, Peseta Espagnol et en Euro. L’interface de cette application est
présentée dans la figure 1
Figure 1
Figure2
Sachant qu’
Un
Un
Un
Un
10
Dollar
franc Français
franc Belge
franc Swiss
Peseta Espagnol
10 dirhams
1.50 dirhams
Tableau 1
1- Ecrire une méthode convert() permettant de convertir le dirhams en divers devises du tableau
1 ;
2- Combien de composant contenus dans cette fenêtre de la figure 1.
3- Lesquelles seront reliées à un listener?
4- Ecrire le programme java réalisant l’interface de la figure 1 et qui convertit le dirham en
diverses devises
L’interface de la figure1 présente un sérieux problème. Lorsque l’utilisateur redimensionne la
fenêtre les composantes ne reste pas appariés et changent de place (voir figure2). On peut
empêcher l’utilisateur de redimensionner la fenêtre en utilisant la méthode :
frm.setResizable(false), comme on peut aussi utiliser des gestionnaires d’agacement et des
panneaux.
5- Proposez une solution basée sur l’utilisation des panneaux (Panel) et les gestionnaires
d’agacement pour réaliser l’interface figure3
5
6
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Conversion extends JFrame implements ActionListener
{
JLabel lbl1,lbl2;
int h;
double r;
JRadioButton rbh1;//radio button height 1
JRadioButton rbh2;
JRadioButton rbh3;
JRadioButton rbh4;
JRadioButton rbh5;
JTextField out_data,In_data;//out weight
ButtonGroup monaie;
JPanel monaiepanel;
JPanel wpanel,hpanel;
public Conversion()
{
lbl1 = new JLabel ( "Donnez la valeur en DIRHAMS" );
monaie = new ButtonGroup();
rbh1 = new JRadioButton("Francs",true) ;
rbh2 = new JRadioButton("Dollars",false) ;
rbh3 = new JRadioButton("Francs Swiss ",false) ;
rbh4 = new JRadioButton("Francs Belge",false) ;
rbh5 = new JRadioButton("Livre Stirlling",false) ;
lbl2 = new JLabel ( "Monaie Convertit en Euro" );
out_data = new JTextField (15);
In_data = new JTextField (15);
JPanel hpanel = new JPanel();
JPanel monaiepanel = new JPanel();
JPanel wpanel = new JPanel();
rbh1.addActionListener( this );
rbh2.addActionListener( this );
rbh3.addActionListener( this );
rbh4.addActionListener( this );
rbh5.addActionListener( this );
rbh1.setActionCommand("h1");
rbh2.setActionCommand("h2");
rbh3.setActionCommand("h3");
rbh4.setActionCommand("h4");
rbh5.setActionCommand("h5");
getContentPane().setLayout( new FlowLayout() );
// getContentPane().setLayout( new BorderLayout() );
hpanel.add(lbl1);
hpanel.add(In_data);
monaie.add(rbh1);
7
monaie.add(rbh2);
monaie.add(rbh3);
monaie.add(rbh4);
monaie.add(rbh5);
monaiepanel.add(rbh1);
monaiepanel.add(rbh2);
monaiepanel.add(rbh3);
monaiepanel.add(rbh4);
monaiepanel.add(rbh5);
wpanel.add(lbl2);
wpanel.add(out_data);
getContentPane().add( hpanel);
getContentPane().add( monaiepanel);
getContentPane().add( wpanel);
/*monaiepanel.setLayout(
new BoxLayout( monaiepanel, BoxLayout.Y_AXIS ) );
hpanel.setLayout(
new BoxLayout( hpanel, BoxLayout.X_AXIS ) );
wpanel.setLayout(
new BoxLayout( wpanel, BoxLayout.X_AXIS ) );
getContentPane().add( hpanel, BorderLayout.NORTH );
getContentPane().add( monaiepanel, BorderLayout.CENTER);
getContentPane().add( wpanel, BorderLayout.SOUTH );*/
out_data.setEditable(false);
}
public void convert(char d )
{ switch (d)
{case '1': r = (h / 10.0);break;
case '2': r = (h / 8.20);break;
case '3': r = (h / 12.0);break;
case '4': r = (h / 9.0);break;
case '5': r = (h / 3.0);break;
}
}
public void actionPerformed( ActionEvent evt)
{
String userIn = In_data.getText();
h=Integer.parseInt( userIn );
if(monaie.getSelection().getActionCommand().equals("h1"))
convert('1');
if(monaie.getSelection().getActionCommand().equals("h2"))
convert('2');
if(monaie.getSelection().getActionCommand().equals("h3"))
convert('3');
if(monaie.getSelection().getActionCommand().equals("h4"))
convert('4');
if(monaie.getSelection().getActionCommand().equals("h5"))
convert('5');
8
out_data.setText(" "+r);
repaint();
}
public static void main ( String[] args )
{ Conversion frm = new Conversion();
WindowQuitter wquit = new WindowQuitter();
frm.addWindowListener( wquit );
frm.setSize( 350, 200 );
frm.setResizable(true);//pour ne pa redimensionner la fenêtre
frm.setVisible( true ); }
}
class WindowQuitter extends WindowAdapter
{ public void windowClosing( WindowEvent e )
{
System.exit( 0 ); }}
Exercise4:
1- Suggérez une disposition
des panneaux pour créer
cet interface de
l'utilisateur
2- Ecrire un programme
Java réalisant cet
interface
IMPORT JAVA.AWT.*;
IMPORT JAVA.AWT.EVENT.*;
CLASS FARTICLE EXTENDS FRAME IMPLEMENTS ACTIONLISTENER{
PRIVATE PANEL P1,P2,P3,P4;
PRIVATE TEXTFIELD TFNOM,TFPRIXHTAXE,TFPRIXTTC,
TFREFERENCE,TFTAUXTVA;
PRIVATE LABEL LNOM,LPRIXHTAXE,LREFERENCE,
LTAUXTVA,LPRIXTTC;
PRIVATE TEXTAREA TACOULEUR;
PRIVATE BUTTON BTCREATE;
PRIVATE BUTTON CMDEXIT ;
PUBLIC FARTICLE(STRING S){
S U P E R( S ) ;
ADDWINDOWLISTENER(NEW CLEXIT());
P1=NEW PANEL(NEW FLOWLAYOUT(FLOWLAYOUT.CENTER));
P3=NEW PANEL(NEW FLOWLAYOUT(FLOWLAYOUT.CENTER));
P4=NEW PANEL(NEW FLOWLAYOUT(FLOWLAYOUT.CENTER));
P2=NEW PANEL(NEW BORDERLAYOUT());
LREFERENCE=NEW LABEL("REFERENCE");
TFREFERENCE=NEW TEXTFIELD(5);
LNOM=NEW LABEL("ARTICLE");
TFNOM=NEW TEXTFIELD(5);
LPRIXHTAXE=NEW LABEL("PRIX HORS TAXE");
TFPRIXHTAXE=NEW TEXTFIELD(5);
LTAUXTVA=NEW LABEL("TAUX TVA");
TFTAUXTVA=NEW TEXTFIELD(5);
LPRIXTTC=NEW LABEL("PRIX TTC");
TFPRIXTTC=NEW TEXTFIELD(5);
9
TACOULEUR=NEW TEXTAREA ("INFORMATION SUR L'ARTICLE : ", 14,
50,TEXTAREA.SCROLLBARS_BOTH);
BTCREATE=NEW BUTTON("CREATE");
BTCREATE.ADDACTIONLISTENER(THIS);
CMDEXIT = NEW BUTTON(" QUITTER ");
CMDEXIT.ADDACTIONLISTENER(NEW JAVA.AWT.EVENT.ACTIONLISTENER() {
PUBLIC VOID ACTIONPERFORMED(JAVA.AWT.EVENT.ACTIONEVENT EVT) {
QUITTERACTIONPERFORMED(EVT); }
});
TFTAUXTVA.SETTEXT("19.6");
P1.ADD(LNOM);
P1.ADD(TFNOM);
P1.ADD(LREFERENCE);
P1.ADD(
TFREFERENCE);
P1.ADD(LPRIXHTAXE);
P1.ADD(TFPRIXHTAXE);
P1.ADD(
LTAUXTVA);
P1.ADD(TFTAUXTVA);
P1.ADD(LPRIXTTC);
P1.ADD(
TFPRIXTTC);
P3.ADD(TACOULEUR);
P4.ADD(BTCREATE);
P4.ADD(CMDEXIT );
P2.ADD(BORDERLAYOUT.NORTH,P1);
P2.ADD(BORDERLAYOUT.CENTER,P3);
P2.ADD(BORDERLAYOUT.SOUTH,P4);
P2.SETBACKGROUND(COLOR.GETHSBCOLOR(97,231,120));
P1.SETBACKGROUND(COLOR.GETHSBCOLOR(157,0,120));
P4.SETBACKGROUND(COLOR.GETHSBCOLOR(150,240,13));
ADD(P2);
SETSIZE(700,300);
SETVISIBLE(TRUE);
}
PUBLIC VOID ACTIONPERFORMED(ACTIONEVENT E){
IF(E.GETSOURCE()==(BTCREATE)){
STRING VALUEHT = TFPRIXHTAXE.GETTEXT();
DOUBLE PRICE = DOUBLE.VALUEOF(VALUEHT).DOUBLEVALUE();
STRING TAUXTVA = TFTAUXTVA.GETTEXT();
DOUBLE RATE = DOUBLE.VALUEOF(TAUXTVA).DOUBLEVALUE();
PRICE = PRICE + (PRICE/100) * RATE;
TFPRIXTTC.SETTEXT("" + PRICE);
STRING S=NEW STRING();
S+=" NOM ARTICLE : "+ TFNOM.GETTEXT()+"\N"+"REFERENCE ARTICLE :
"+TFREFERENCE.GETTEXT()+"\N"+"PRIX UNITAIRE HORS TAXE :
"+TFPRIXHTAXE.GETTEXT()+"\N";
S+="PRIX TTC "+TFPRIXTTC.GETTEXT()+"\N";;
TACOULEUR.SETTEXT(S);
TFNOM.SETTEXT("");
TFPRIXHTAXE.SETTEXT("");
TFREFERENCE.SETTEXT("");
10
}
}
}
PRIVATE VOID QUITTERACTIONPERFORMED(JAVA.AWT.EVENT.ACTIONEVENT EVT) {
SYSTEM.EXIT(0);
PUBLIC STATIC VOID MAIN(STRING[] ARG){
FARTICLE F=NEW FARTICLE("FENETRE");
}
Exercise5
1- Ecrire un programme Java réalisant cet
interface en utilisant Menu
import java. awt.*;
import java. awt. event.*;
import javax. swing.*;
import java.awt.*;
public class teste extends JFrame {
public teste() {
super();
setTitle(" Titre de la Fenetre ");
setSize(300, 150);
MenuBar mb = new MenuBar();
setMenuBar(mb);
Menu m = new Menu(" un menu ");
mb.add(m);
m.add(new MenuItem(" 1er element "));
m.add(new MenuItem(" 2eme element "));
Menu m2 = new Menu(" sous menu ");
CheckboxMenuItem cbm1 = new CheckboxMenuItem(" menu item 1.3.1 ");
m2.add(cbm1);
cbm1.setState(true);
CheckboxMenuItem cbm2 = new CheckboxMenuItem(" menu item 1.3.2 ");
m2.add(cbm2);
m.add(m2);
pack();
show();
}
public static void main(String[] args) {
teste frm=new teste();
frm.setSize( 350, 250 );
11
frm.setResizable(false);
frm.setVisible( true );
// affiche la fenetre
}}
12
Téléchargement