Exercice1:
1- Ecrire
une classe MainFrame qui hérite de la classe JFrame mais permet de recevoir des
paramètres qui sont la largeur, la hauteur, la position X et la position Y de
la fenêtre, puis d'appliquer ces paramètres à la fenêtre créée. La fenêtre crée
doit avoir un arrière plan bleu (blue), et contenir les éléments suivants:
ü
En haut centré : un label "Calculatrice de test" dont le
font est "Dialog", gras (BOLD, de taille 40 et de couleur rouge
(red).
ü
Au centre de la fenêtre un label "Nombre 1:", puis un champ
de texte "champ1", puis label "Nombre2:
", puis un champ de texte "champ2".
ü
En bas label "résultat
: " puis un champ de texte "champ3"
ü
A gauche deux boutons positionnés verticalement : le bouton
"Calculer" puis le bouton "Quitter".
ü
A droite une liste de choix qui permet de choisir entre les
opérations : "+" et
"-"
2- Ecrire
la classe AppelCalculatrice qui permet d'instancier la classe MainFrame sachant
que la fenêtre créée aura la dimension (400,300) et les coordonnées (100,40).
3- Ecrire la classe FonctionCalc qui décrit le
fonctionnement de la calculatrice :
üLe bouton "Quitter" permet de fermer la fenêtre.
ü Le bouton "Calculer" permet d'effectuer l'opération
choisie dans la liste de choix sur les deux nombres ("champ1" op
"champ2") et le résultat est affecté dans "champ3" qui représente le résultat.
Exercice2: Écrire un
programme contenant une fonction calc () qui effectue une division par
zéro mais peut détecter cette exception et créer et lever une exception
particulière (d'une nouvelle classe d'exceptions avec le message d'erreur
"division par 0!") qu'elle va propager à la fonction qui l'a appelé.
Le traitement de l'exception dans la fonction appelante consiste simplement à
afficher le message d'erreur.
Solution exo 1:
import javax.swing.*;import java.awt.*;import
java.awt.event.*;
import java.util.Vector; import java.text.*;
class AppelCalculatrice {
public static void main(String []arg)
{JFrame frame=new MainFrame(800,600, 20, 40); } }
class FonctionCalc implements ActionListener,ItemListener {
MainFrame parent;
String op;
NumberFormat formatNombres=NumberFormat.getInstance();
public FonctionCalc (MainFrame parent)
{this.parent=parent;}
public void actionPerformed(ActionEvent e1)
{ JButton b = (JButton)e1.getSource();
if (b==parent.quit) System.exit(0);
else if (b==parent.calc) calculer();}
public void calculer ()
{double n1= formatNombres.parse(parent.champ1.getText(),new ParsePosition(0)).doubleValue();
double n2= formatNombres.parse(parent.champ2.getText(),new ParsePosition(0)).doubleValue();
if (op =="+") parent.champ3.setText(formatNombres.format(n1+n2));
else if (op =="-") parent.champ3.setText(formatNombres.format(n1-n2));
return;
}
public void itemStateChanged(ItemEvent e2)
{op=parent.list.getSelectedItem().toString(); }
}
class MainFrame extends JFrame
{
JLabel titre,n1,n2,n3;
JTextField champ1,champ2,champ3;
JButton
quit,calc;
JComboBox
list;
//Constructeur
public MainFrame (int width, int height, int x, int y)
{ // partie graphique
setTitle("Ma fenetre");
setSize(width, height);
setLocation(x, y);
JPanel panel=new JPanel();
panel.setLayout(new BorderLayout());
panel.setBackground(Color.blue);
titre=new JLabel("Calculatrice
de test");
titre.setFont(new Font("Dialog", Font.BOLD,40)); titre.setForeground(Color.red);
panel.add("North",titre);
n1 = new JLabel("Nombre1:");n2 = new JLabel("Nombre2:"); n3 = new JLabel("Résultat:");
champ1= new JTextField(30); champ2= new JTextField(30); champ3= new JTextField(30);
quit= new JButton ("Quitter");calc= new JButton ("Calculer");
JPanel p1 = new JPanel();
p1.setLayout(new BoxLayout(p1, BoxLayout.X_AXIS));
p1.add(n1); p1.add(champ1); p1.add(n2);p1.add(champ2);
panel.add("Center",p1);
JPanel p2 = new JPanel();
p2.setLayout(new BoxLayout(p2, BoxLayout.Y_AXIS));
p2.add(calc); p2.add(quit);
panel.add("West",p2);
JPanel p3 = new JPanel();
p3.setLayout(new BoxLayout(p3, BoxLayout.X_AXIS));
p3.add(n3); p3.add(champ3);
panel.add("South",p3);
Vector v=new Vector(); v.addElement("+"); v.addElement("-");
list=new JComboBox(v);
panel.add("East",list);
setContentPane(panel);
setVisible(true);
// partie appel des listener
FonctionCalc ecouteur = new FonctionCalc(this);
list.addItemListener(ecouteur);
quit.addActionListener(ecouteur);calc.addActionListener(ecouteur); }}
solution exo 2 :
class MonException extends Exception {
public String toString() {return ("division par 0!");}
}
public class ex2 {
public static void main (String[] args){
try {calc();}
catch (MonException e){System.out.println(e.toString());}
}
public static void calc() throws MonException {
try {int i=4/0;}
catch (Exception e){throw new MonException();}}
}