• Aucun résultat trouvé

Licence Informatique 2ème année Programmation Objet I

N/A
N/A
Protected

Academic year: 2021

Partager "Licence Informatique 2ème année Programmation Objet I"

Copied!
4
0
0

Texte intégral

(1)

Licence Informatique 2ème année

Programmation Objet I

TD n°5 – Interfaces graphiques

1- Calculatrice

1.1 Compléter la classe Calculatrice correspondant à l'interface, en négligeant la gestion des événements (il faut uniquement créer et placer les composants).

import javax.swing.*;

import java.awt.*;

import javax.swing.border.*;

public class Calculatrice extends JFrame { public Calculatrice() {

super("Calculatrice");

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Font f = new Font("Liberation Serif",Font.PLAIN,18);

UIManager.put("Button.font", f);

UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");

/** A COMPLETER */

this.pack();

this.setVisible(true);

}

public static void main(String[] args) {

javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { new Calculatrice(); }

});

} }

1.2 Compléter la classe Calculatrice2 correspondant à l'interface, en négligeant la gestion des événements (il faut uniquement créer et placer les composants).

import javax.swing.*;

import java.awt.*;

import javax.swing.border.*;

public class Calculatrice2 extends JFrame { public Calculatrice2() {

super("Calculatrice");

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

/** A COMPLETER */

this.pack();

this.setVisible(true);

}

public static void main(String[] args) {

(2)

javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { new Calculatrice2(); }

});

} }

2- Convertisseur

2.1 Compléter la classe Convertisseur1 qui représente une interface permettant de convertir un montant d'euros en dollars ou inversement, avec deux boutons. Si le montant n'est pas correct (par exemple l'utilisateur a saisi des lettres), il faut afficher une fenêtre d'erreur. On peut prendre comme taux 1.15 dollar pour un euro.

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Convertisseur1 extends JFrame { JTextField euros, dollars;

public Convertisseur1() { super("Convertisseur");

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setLayout(new GridLayout(3,2));

euros = new JTextField();

this.add(new JLabel(" euros : "));

this.add(euros);

dollars = new JTextField();

this.add(new JLabel(" dollars : "));

this.add(dollars);

JButton jb = new JButton("\u20ac \u2192 \u0024");

this.add(jb);

/** A COMPLETER */

jb = new JButton("\u0024 \u2192 \u20ac");

this.add(jb);

/** A COMPLETER */

this.pack();

this.setVisible(true);

}

/** A COMPLETER */

public static void main(String[] args) {

javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { new Convertisseur1(); } });

} }

2.2 Modifier l'interface pour avoir aussi un champ textuel en yuans (un yuan vaut 0.145 dollars et 0.127 euros). Il ne doit plus y avoir de bouton, la conversion a lieu quand on tape la touche ENTRÉE sur un des champs.

(3)

3- Dessin

3.1 Compléter la classe Dessin1 qui représente une interface affichant des points (sous forme de petits cercles) de façon persistante (les points ne doivent pas disparaitre quand on déplace la fenêtre). On peut générer des positions aléatoirement. L'interface doit permettre de déplacer les points à la souris avec le bouton gauche.

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.event.*;

public class Dessin1 extends JFrame implements MouseListener, MouseMotionListener{

private int width=1000, height=800, select=-1;

private Display d;

private Point[] t = new Point[10];

public Dessin1() {

super("Dessin1");

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.init();

this.d = new Display();

this.d.addMouseListener(this);

this.d.addMouseMotionListener(this);

this.add(d);

this.setPreferredSize(new Dimension(this.width,this.height));

this.pack();

this.setVisible(true);

}

private void init(){

for(int i=0;i<t.length;i++) t[i] = new Point((int)

(Math.random()*this.width), (int) (Math.random()*this.height));

}

private void pressed(MouseEvent e){ /** A COMPLETER */ } private void released(){ /** A COMPLETER */ }

private void dragged(MouseEvent e){ /** A COMPLETER */ } public void mouseClicked(MouseEvent e) {}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mouseMoved(MouseEvent e) {}

public void mousePressed(MouseEvent e) {pressed(e);}

public void mouseReleased(MouseEvent e) {released();}

public void mouseDragged(MouseEvent e) {dragged(e);}

class Display extends JPanel{

public Display(){

super();

this.setBackground(Color.GRAY);

}

public void paintComponent(Graphics g){ /** A COMPLETER */ } }

public static void main(String[] args) {

javax.swing.SwingUtilities.invokeLater(new Runnable() {

(4)

public void run() { new Dessin1(); } });

} }

3.2 Ajouter une barre d'outil avec un curseur permettant de modifier dynamiquement la taille des cercles. Ajouter un raccourci clavier qui réinitialise aléatoirement les positions des points.

Références

Documents relatifs

Chaque mois, les citoyens ayant un revenu mensuel supérieur à 850 euros payent à l'état un impôt sur le revenu égal à 14% de leurs revenus.. En plus, tous les citoyens payent à

Chaque partie peut être une chaine de caractères, mais aussi une histoire en elle-même : les 1001 Nuits racontent l'histoire de Shéhérazade, qui elle-même raconte des histoires

En outre, les acronymes doivent avoir une méthode String getSigle() qui renvoie la chaine de caractères constituée par les premières lettres de chacun des mots (NB : la méthode

Ces cotisant ont aussi une méthode qui calcule leur pension de retraite, égale à 75% du salaire moyen (somme des salaires / mois), plus le montant du compte pénibilité, moins 10%

Le code proposé doit comporter une classe Chiffres qui représente la numérotation avec uniquement des chiffres arabes (du genre 1.2.2) et implémente toutes les méthodes de

Construire l’arbre de recherche parcouru par l’interpréteur Prolog lors de la résolution de ce but (on pourra se limiter à une profondeur de 5 résolutions et ne pas détailler

e- La boule séparée du tissu est reliée par une tige en verre à une deuxième boule initialement neutre... II- On considère le circuit électrique comportant, en série, une pile,

Ecrire une analyse d’un programme qui permet d’afficher le nom du jour (dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi) à partir de sa date saisie au clavier sous