IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

customisation de curseur


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 15
    Par défaut customisation de curseur
    Bonjour à tous.

    j'essaie de faire un truc tout bête mais qui évidemment ne marche pas correctement de mon coté, à savoir de me définir un curseur qui sera utilisé pendant les temps de traitement pour signaler que le programme calcule.
    J'arrive déjà à utiliser le curseur sablier prédéfinis par awt mais j'aimerais justement en utiliser un autre à partir d'une image .gif

    Voila ce que j'ai fait pour le moment:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    import java.applet.Applet;
    import java.awt.*;
     
    public class Cursors2 extends Applet
    {
       public static Cursor Default_cursor = new Cursor(0); 
       public static Cursor Wait_cursor = new Cursor(1); 
     
        @Override
       public void init()
       {
            MediaTracker tracker = new MediaTracker(this);
            Image cursor = getImage(getCodeBase(), "acmcursor.gif");
            Image cursorWait = getImage(getCodeBase(), "clock_attente.gif");
     
            tracker.addImage(cursor, 0);
            tracker.addImage(cursorWait, 1);
     
            try
            {
                tracker.waitForID(0);
                tracker.waitForID(1);
            }
            catch (Exception ie)
            {
                ie.printStackTrace();
            }
     
            Cursor cr = Cursor.getDefaultCursor();
            Cursor crW = Cursor.getPredefinedCursor(5);
     
            Toolkit tk = getToolkit();
     
            try
            {
                Point hotSpot = new Point(7, 2);
                cr = tk.createCustomCursor(cursor, hotSpot, "acmcursor"); 
                crW = tk.createCustomCursor(cursorWait, hotSpot, "clock_attente"); 
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
     
     
            Default_cursor=cr;
            Wait_cursor=crW;
       }
     
        public static Cursor getWaitCursor()
        {
            return Wait_cursor;
        }
     
        public static Cursor getDefaultCursor()
        {
            return Default_cursor;
        }
    Et voila comment j'appelle mon changement de curseur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    jButton1.addMouseListener(new java.awt.event.MouseAdapter() 
            {
                public void mouseClicked(java.awt.event.MouseEvent evt) 
                {
                    try
                    {
                        jDialogSearchSecretary.setCursor(Cursors2.getWaitCursor());
                        jButtonAjouterMouseClicked(evt);
                        jDialogSearchSecretary.setCursor(Cursors2.getDefaultCursor());
                    }
                    catch (Exception ex)
                    {
                        jDialogSearchSecretary.setCursor(Cursors2.getDefaultCursor());
                        ex.printStackTrace();
                    }            
                }
            });
    Avec ça ça ne plante pas et mon curseur se modifie correctement pendant le traitement mais c'est un curseur par défaut qui s'affiche et non pas le .gif que je voudrait afficher. j'ai beau changer le Cursor crW = Cursor.getPredefinedCursor(5); en lui indiquant un autre curseur prédéfini, c'est toujours le même qui s'affiche.

    Je me dis que peut être est parce que je n'ai pas placé mon image au bon endroit mais j'ai déjà essayé pas mal d'emplacement de mon projet sans succès.

    Est ce que quelqu'un voit quel est le problème ?

    merci d'avance

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Voici un exemple trivial, qui fonctionne, avec une simplification pour récupérer l'image (plus simple que l'utilisation directe du MediaTracker) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    import java.awt.Cursor;
    import java.awt.Image;
    import java.awt.Point;
    import java.awt.Toolkit;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
     
    import javax.swing.JFrame;
     
     
    public class MyCursor
    {
    	public static void main( String[] arg )
    	{
    		new MyCursor();
    	}
     
    	private Cursor cursorDefault;
    	private Cursor cursorCustom;
    	private JFrame frame;
    	private boolean isDefaultCursor = true;
     
    	public MyCursor()
    	{
    		frame = new JFrame();
    		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
     
    		cursorDefault = frame.getCursor();
    		Image img = Toolkit.getDefaultToolkit().createImage( "image.jpg" );
    		cursorCustom = Toolkit.getDefaultToolkit().createCustomCursor( img, new Point( 0, 0 ), "toto" );
     
    		frame.addMouseListener( new MouseAdapter()
    		{
    			public void mouseClicked( MouseEvent e )
    			{
    				frame.setCursor( isDefaultCursor ? cursorCustom : cursorDefault );
    				isDefaultCursor = ! isDefaultCursor;
    			}
    		});
     
    		frame.setSize( 320, 200 );
    		frame.setVisible( true );
    	}
    }
    J'ai mis l'image à la racine du projet sous Eclipse.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Pour vérifier si ton image est au bon endroit, affiche le retour de "getCodeBase" dans ton applet, ensuite, tente d'accéder à l'image en tapant l'URL directement dans ton navigateur.
    J'ai utiliser ton code, et il fonctionne. Je pense donc à un mauvais emplacement de l'image ou une erreur dans le nom.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 15
    Par défaut
    Tu travailles en local ou directement sur un serveur ?
    Je ne comprend pas trop pourquoi getCodeBase() devrait me retourner une URL alors que mon image est censée se trouver à la racine de mon projet.

    Comment est ce que je peux afficher le retour de getCodeBase() ?

  5. #5
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par goingoin Voir le message
    Tu travailles en local ou directement sur un serveur ?
    Je ne comprend pas trop pourquoi getCodeBase() devrait me retourner une URL alors que mon image est censée se trouver à la racine de mon projet.

    Comment est ce que je peux afficher le retour de getCodeBase() ?
    Je travaille en local.
    Ton code est exécuté comment ? En lisant "getCodeBase" j'ai supposé que tu faisais une applet car tu ne donne aucune précision.
    Pour afficher le retour de "getCodeBase", tu peux utiliser des millions de techniques : écrire dans un fichier, afficher dans un JLabel si c'est une applet ou un client Swing, écrire dans le HTML si c'est du web...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

Discussions similaires

  1. Curseur modifié (customiser) s'affiche en haut à gauche de l'anim
    Par Dsphinx dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 13/08/2007, 15h25
  2. Masquer le curseur en mode MS-DOS
    Par Alex120 dans le forum C
    Réponses: 2
    Dernier message: 10/07/2002, 09h30
  3. Comment limiter les mouvements du curseur??
    Par scorpiwolf dans le forum C++Builder
    Réponses: 9
    Dernier message: 07/07/2002, 22h09
  4. Comment masquer le curseur de la souris ?
    Par benj63 dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/06/2002, 18h54
  5. Position du curseur dans Edit
    Par MrJéjé dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 17h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo