Licence Informatique 2ème année
Programmation Objet ITD 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) {
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- 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() {
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.