C. Recanati
InHM
Master M1, 2012
Eléments de correction des TP 9 et 10
// Constants.java
import java.awt.*;
public interface Constants {
// Les types d'elements
int LIGNE = 101;
int RECTANGLE = 102;
int CERCLE = 103;
int COURBE = 104;
// Les conditions initiales
int DEFAULT_ELEMENT_TYPE = RECTANGLE;
Color DEFAULT_ELEMENT_COLOR = Color.green;
}
// SketcherFrame.java version 1
import java.awt.*;
import java.awt.event.*;
import javax.swing.* ;
public class SketcherFrame extends JFrame
implements Constants {
// membres
protected JTextArea output;
protected JScrollPane scrollPane ;
private JMenuBar menuBar;
// couleur et type de l'element courant
private Color elementColor
= DEFAULT_ELEMENT_COLOR;
private int elementType = DEFAULT_ELEMENT_TYPE;
protected String newline = "\n";
// constructeurs
public SketcherFrame(String titre) {
// pour definir les menus
JMenu menu, submenu;
JMenuItem menuItem;
JRadioButtonMenuItem rbMenuItem;
JCheckBoxMenuItem cbMenuItem;
setTitle(titre);
setDefaultCloseOperation(EXIT_ON_CLOSE);
// Créer l’éditeur de texte scrollé
output = new JTextArea(10, 80);
output.setEditable(false);
scrollPane = new JScrollPane(output);
//l’ajouter au cadre
Container contentPane = getContentPane();
contentPane.add(scrollPane,
BorderLayout.CENTER) ;
//Créer la barre de menu
menuBar = new JMenuBar();
setJMenuBar(menuBar);
//Construire le premier menu.
menu = new JMenu("Fichiers");
menu.setMnemonic(KeyEvent.VK_F);
menuBar.add(menu);
//un groupe de JMenuItems pour ce menu
menuItem = new JMenuItem("Ouvrir",
KeyEvent.VK_O);
menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_1,
ActionEvent.ALT_MASK));
menu.add(menuItem);
menuItem = new JMenuItem("texte et icone",
new
ImageIcon("icone.gif"));
menuItem.setMnemonic(KeyEvent.VK_A);
menu.add(menuItem);
menuItem = etc
menu.addSeparator();
etc
// Construire le second menu
menu = new JMenu("Elements");
ibid que précédemment avec le menu Fichiers
menuBar.add(menu);
//un groupe d’items type radio button
ButtonGroup group = new ButtonGroup();
rbMenuItem = new JRadioButtonMenuItem
("Ligne", elementType ==LIGNE);
rbMenuItem.setMnemonic(KeyEvent.VK_L);
group.add(rbMenuItem);
rbMenuItem.addActionListener
(new TypeListener(LIGNE));
menu.add(rbMenuItem);
// rebelotte avec le type suivant
rbMenuItem = new JRadioButtonMenuItem
("Rectangle",
elementType == RECTANGLE);
rbMenuItem.addActionListener
(new TypeListener(RECTANGLE));
menu.addSeparator();
// le sous menu pour les couleurs
submenu = new JMenu("Couleur");
submenu.setMnemonic(KeyEvent.VK_C);
// un groupe de check box menu items
ButtonGroup group2 = new ButtonGroup();
cbMenuItem = new JCheckBoxMenuItem("Rouge",
elementColor.equals(Color.red));
cbMenuItem.setMnemonic(KeyEvent.VK_R);
group2.add(cbMenuItem);
cbMenuItem.addActionListener (new
ColorListener(Color.red));
submenu.add(cbMenuItem);
cbMenuItem = new JCheckBoxMenuItem("Bleu",
elementColor.equals(Color.blue));
// etc
//Construire le dernier menu.
menu = new JMenu("Aide");
menu.setMnemonic(KeyEvent.VK_A);
// ajouter un separateur horizontal avant
menuBar.add(Box.createHorizontalGlue());
menuBar.add(menu);
}
class TypeListener implements ActionListener {
private int type; // un type d’element
TypeListener(int type) {
this.type = type;
}
public void actionPerformed(ActionEvent e) {
elementType = type;
JMenuItem source =
(JMenuItem)(e.getSource());
String s = "ActionEvent detecte"
+" dans TypeListener" + newline
+ " Event source: "
+ source.getText()
+ " (une instance de "
+ getClassName(source) + ")";
output.append(s + newline);
}
}
class ColorListener implements ActionListener {
private Color color; // couleur d’element
ColorListener(Color color) {
// memoriser la couleur
}
public void actionPerformed(ActionEvent e) {
elementColor = color;
JMenuItem source =
(JMenuItem)(e.getSource());
String s = "ActionEvent detecte"
+ " dans ColorListener." + newline
etc + getClassName () +
}
}
protected String getClassName(Object o) {
String classString = o.getClass().getName();
int dotIndex = classString.lastIndexOf(".");
return classString.substring(dotIndex+1);
}
}
// Sketcher.java
//
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class Sketcher {
// private SketcherModel model;
private SketcherView view;
private static SketcherFrame window;
private static Sketcher theApp;
public static void main(String[] args) {
theApp = new Sketcher();
theApp.init();
}
public SketcherFrame getWindow() {
return window;
}
/* public SketcherModel getModel() {
return model;
}
*/ public SketcherView getView() {
1 / 14 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !