Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2925 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Résolu][Swing] Dessiner avec la souris

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu][Swing] Dessiner avec la souris

n°1864801
koskoz
They see me trollin they hatin
Posté le 23-03-2009 à 15:09:17  profilanswer
 

Salut tout le monde,
j'aimerai faire en sorte que l'utilisateur puisse placer des notes sur une partition, via la souris.
 
Voici pour le moment ma classe principale :
 

Code :
  1. public class Editeur {
  2.  
  3.    static JToolBar toolBar = new JToolBar();
  4.    static JFrame frame;
  5.    static int cursorChanged = 0; // blanche = 1, noire = 2
  6.  
  7.    public static void main(String[] args) {
  8.        frame = new JFrame("Editeur de Partitions Musicales" );
  9.        frame.setSize(800, 600);
  10.        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  11.        frame.setLocationRelativeTo(null);
  12.        frame.setJMenuBar(new MenuBar());
  13.        frame.setVisible(true);
  14.        frame.addMouseListener(new MouseListener(frame));
  15.  
  16.        // Création de la toolbar
  17.        frame.getContentPane().add(toolBar, BorderLayout.NORTH);
  18.        toolBar.setFloatable(false);
  19.        addButtons();
  20.  
  21.        // Affichage de la partition
  22.        DrawPartition partition = new DrawPartition();
  23.        frame.getContentPane().add(partition, BorderLayout.CENTER);
  24.        partition.setBackground(Color.white);
  25.        
  26.    }
  27.  
  28.    static protected void addButtons() {
  29.        Icon blancheImg = new ImageIcon("src/blanche.gif" );
  30.        JButton blanche = new JButton("Blanche", blancheImg);
  31.        blanche.addActionListener(new ChangeCursor());
  32.        toolBar.add(blanche);
  33.        Icon noireImg = new ImageIcon("src/noire.gif" );
  34.        JButton noire = new JButton("Noire", noireImg);
  35.        noire.addActionListener(new ChangeCursor());
  36.        toolBar.add(noire);
  37.    }
  38.  
  39.    static class ChangeCursor implements ActionListener {
  40.  
  41.        public void actionPerformed(ActionEvent e) {
  42.            Image image = null;
  43.            Toolkit toolkit = Toolkit.getDefaultToolkit();
  44.  
  45.            if (e.getActionCommand().equals("Blanche" )) {
  46.                image = toolkit.getImage("src/curseur_blanche.gif" );
  47.                cursorChanged = 1;
  48.            } else {
  49.                image = toolkit.getImage("src/curseur_noire.gif" );
  50.                cursorChanged = 2;
  51.            }
  52.            Cursor cursor = toolkit.createCustomCursor(
  53.                    image, new Point(26, 27), "img" );
  54.            frame.setCursor(cursor);
  55.        }
  56.    }
  57.  
  58.    static class MouseListener extends MouseAdapter {
  59.        
  60.        public MouseListener(JFrame pan) {
  61.        }
  62.  
  63.        public void mouseClicked(MouseEvent e) {
  64.  
  65.            if (e.getButton() == MouseEvent.BUTTON3) {
  66.                /* Si une note est séléctionnée et qu'un clic droit est
  67.                effectué, on revient au curseur par défaut */
  68.                if (cursorChanged != 0) {
  69.                    Cursor cursor = new Cursor(Cursor.DEFAULT_CURSOR);
  70.                    frame.setCursor(cursor);
  71.                }
  72.            }
  73.            // Gestion du clic gauche
  74.            if (e.getButton() == MouseEvent.BUTTON1) {
  75.                // Si le curseur a changé, on place la note
  76.                if (cursorChanged != 0) {
  77.                }
  78.            }
  79.        }
  80.    }
  81. }


 
En gros, si l'utilisateur clique sur un des deux boutons, le curseur prend l'apparence de la note sélectionné, puis si l'utilisateur fait un clique gauche et que la note est sélectionnée, on place la note sur la partition.
 
Le problème, c'est que je ne sais pas comment dessiner sur mon panel sur ma partition.
Bêtement, il suffit de faire un g.drawImage, mais je ne vois pas comment récupérer le contexte de la partition pour que la classe MouseListener puisse s'en servir.
 
Merci :jap:

Message cité 1 fois
Message édité par koskoz le 28-03-2009 à 16:58:44

---------------
Twitter
mood
Publicité
Posté le 23-03-2009 à 15:09:17  profilanswer
 

n°1866407
koskoz
They see me trollin they hatin
Posté le 26-03-2009 à 20:53:37  profilanswer
 

Personne ? :(


---------------
Twitter
n°1866766
Deamon
Posté le 27-03-2009 à 16:40:53  profilanswer
 

koskoz a écrit :

mais je ne vois pas comment récupérer le contexte de la partition pour que la classe MouseListener puisse s'en servir.


 
Pas bien compris. En passant ta partition au constructeur du listener ça marche pas ?

n°1866990
koskoz
They see me trollin they hatin
Posté le 28-03-2009 à 16:43:36  profilanswer
 

Effectivement, je passe le panel au constructeur du listener, et ensuite je fais ça pour dessiner dessus :
Graphics g = pan.getGraphics();
 
Et ca fonctionne :jap:


---------------
Twitter

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Résolu][Swing] Dessiner avec la souris

 

Sujets relatifs
[resolu]comment revenir sur page de résultats?[résolu] Création de dossier
BASIC PIC16F877A [résolu][Resolu] CSS et Background
[Resolu] Gestion de la mémoire[résolu][C] Strlen - erreur de segmentation
Affichage des champs d'une table [RESOLU][resolu]Tenir une requete?
[Résolu] Limite le nombre d'éléments matchés[RESOLU]isset d'un GET d'une checkbox
Plus de sujets relatifs à : [Résolu][Swing] Dessiner avec la souris


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR