slam4:gui:swing

Ceci est une ancienne révision du document !


Swing

Partie 1

Gestion des événements sur la fenêtre :
Sur fermeture de la fenêtre, ou l'ouverture d'un Dessin, si le dessin en cours a été modifié (dirty=true dans MainController), la boîte de message suivante doit-être affichée :

Boîtes de message :
Ecouteurs sur fenêtre :

  1. WindowAdapter
  2. WindowListener

Partie 2

Ajout de l'outil Épaisseur de trait

  • 1 - Boîte de dialogue :

  • Eléments :

  • contentPane → [new BorderLayout(0, 0)]
  • zoneDeSaisie → North JPanel [new FlowLayout(FlowLayout.CENTER, 10, 10)]
    • JLabel + JSlider → setMinorTickSpacing, setMajorTickSpacing, setPaintTicks, setPaintLabels, setFont(new Font(“Segoe UI”, Font.PLAIN, 11))
  • bandeDeBoutons → South JPanel[new FlowLayout(FlowLayout.RIGHT, 10, 10)]

Partie 1

Pour la partie 1, travailler en binômes : 1 étudiant utilise les actionListeners, 1 autre le propertyChangeListener.
Les expériences sont ensuite partagées.
Dans chaque binôme :

  1. 1 étudiant implémente les actions suivantes en utilisant des ActionListener dans la vue FenetreDeDessin dans le projet TD6-ACTL
    • changement d'outil sur menu (Etoile ou crayon)
    • Fermeture de l'application
    • Effacement du dessin
  2. 1 autre implémente ces 3 mêmes actions en utilisant PropertyChangeListener au niveau du contrôleur dans le projet TD6-PCL
  3. Comparer ensuite les 2 versions (avantages/inconvénients)

Partie 2

  1. Implémenter les actions des éléments de menu Ouvrir, Enregistrer et Enregistrer sous :
    • observer et comprendre la mise en oeuvre de la sérialisation proposée (Interface, classe DAO, classes métier)
    • utiliser l'instance dessinDao du contrôleur pour l'ouverture et la sauvegarde, et la propriété dirty (drapeau pour désigner la modification)
    • utiliser JFileChooser pour les boîtes de dialogue (voir FileDialogEx.java) voir JFileChooser javadoc
    • Gérer les exceptions

Partie 3

  1. Créer une boîte de dialogue A propos de… et ajouter un élément de menu correspondant dans un menu ?/A propos de… voir JDialog
  2. Proposer des solutions pour qu'une seule instance de DialogAbout soit créée pendant l'exécution de l'application
  3. Créer un sous menu Couleur dans Outil, proposant de changer la couleur de l'outil (noir, bleu, rouge, vert, jaune), modifier le modèle pour prendre en compte la couleur des figures.

Boîte de dialogue A propos de… :

  • Charger une image contenue dans les sources java :

	String imagePathAndFileName="CheminRelatifVersImage";
	java.net.URL imageURL = getClass().getResource(imagePathAndFileName);
	img = new ImageIcon(imageURL).getImage();

  • Dessiner sur un JPanel :

	JPanel panel = new JPanel() {
		@Override
		public void paint(Graphics g) {
			//dessin sur g...
		}
	};

  1. Terminer l'implémentation Dessin Swing avec 2 outils + Contrôleur principal
  2. Ajouter le changement d'outil sur frappe touche du clavier (e → Etoile , c → Crayon ) voir addKeyListener
  3. Ajouter le changement d'outil dans un menu Outil composé de 2 JRadioButtonMenuItem, intégrés dans un ButtonGroup :

Menu Outil :

java 7 JFrame API
Paramètres de base

  • setTitle(String)
  • setSize(int, int)
  • setDefaultCloseOperation(int)
  • setLocationRelativeTo(Component)
  • setJMenuBar(JMenu)
  • setLayout(LayoutManager)
  • add(Component, Object)
  • setVisible(Boolean)

Ajout de listeners :

  • addMouseListener(MouseListener l)
  • addMouseMotionListener(MouseMotionListener l)
  • addKeyListener(KeyListener l)

Java 7 JMenuBar API

  • add(JMenu)

JMenu

  • add(JMenuItem)
  • addSeparator()
JMenuItem
  • addActionListener(ActionListener)

BorderLayout

		parent.setLayout(new BorderLayout());
		parent.add(component, BorderLayout.CENTER);

GridLayout

		parent.setLayout(new GridLayout(1, 3));
		parent.add(component);

  • slam4/gui/swing.1398187934.txt.gz
  • Dernière modification : il y a 7 ans
  • (modification externe)