1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
| import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import javax.swing.*;
class Arret {
private int id;
private int x; //les coordonnees d'un arret sont en % de la carte support
private int y;
public Arret(int ident, int X, int Y) {
this.id=ident;
this.x=X;
this.y=Y;
System.out.println("Création d'un nouvel arret "+id);
}
public void draw(Graphics2D g2) {
System.out.println("draw arret "+id);
g2.setColor(Color.red);
g2.drawOval(x,y,100,100);
}
}
class ListeArrets extends ArrayList<Arret> {
public void addArret(Arret a) {
this.add(a);
System.out.println("Ajout d'un arret à la liste : n°"+this.size());
}
}
class Carte extends JComponent implements MouseListener {
private ListeArrets listeArrets = null;
private Image image = null;
public Carte(ListeArrets listeArrets) {
this.listeArrets = listeArrets;
this.addMouseListener(this);
}
public void chargerCarte(String path) {
this.image = Toolkit.getDefaultToolkit().getImage(path);
repaint();
}
public void mouseClicked(MouseEvent arg0) {
System.out.println("CLIC :)");
listeArrets.addArret(new Arret(listeArrets.size()+1, arg0.getX(), arg0.getY()));
repaint();
}
public void mousePressed(MouseEvent arg0) {
}
public void mouseReleased(MouseEvent arg0) {
}
public void mouseEntered(MouseEvent arg0) {
}
public void mouseExited(MouseEvent arg0) {
}
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
if (image != null) {
g2.drawImage(image, 0, 0, this);
Dimension dimensionImage = new Dimension(image.getWidth(this), image.getHeight(this));
this.setPreferredSize(dimensionImage); // semble utile pour le JScrollPane
this.setSize(dimensionImage); // semble utile pour le JScrollPane
}
for (int i=0 ; i<listeArrets.size(); i++) {
Arret temp = listeArrets.get(i);
temp.draw(g2);
}
}
}
class EditionCarte extends JPanel {
Carte carte;
public EditionCarte(ListeArrets listeArrets) { // MODIF
super();
carte = new Carte(listeArrets);
JScrollPane scroll = new JScrollPane(carte);
this.setLayout(new BorderLayout());
this.add(scroll);
}
public Carte getCarte() {
return carte;
}
}
public class Edition extends JFrame {
private JMenuBar barre = null;
private JMenu fichier = null;
private JMenu nouveau = null;
private JMenuItem nouvCarte = null;
private JMenuItem nouvArret = null;
private JMenuItem nouvDonnee = null;
private JMenuItem quitter = null;
String carte1 = "C:\\...\\XX1.JPG";
String carte2 = "C:\\...\\XX2.JPG";
public Edition() {
super("Edition");
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {}
setSize(new Dimension(800,600));
setPreferredSize(new Dimension(800,600));
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ListeArrets listeArrets = new ListeArrets();
final EditionCarte editionCartePanel = new EditionCarte(listeArrets);
this.getContentPane().add(editionCartePanel);
this.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("A"), "action A");
this.getRootPane().getActionMap().put("action A", new AbstractAction() {
public void actionPerformed(ActionEvent ae) {
System.out.println("A pressé");
editionCartePanel.getCarte().chargerCarte(carte1);
}
}
);
this.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("B"), "action B");
this.getRootPane().getActionMap().put("action B", new AbstractAction() {
public void actionPerformed(ActionEvent ae) {
System.out.println("B pressé");
editionCartePanel.getCarte().chargerCarte(carte2);
}
}
);
setVisible(true);
}
public static void main(String[] args) {
new Edition();
}
} |
Partager