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

Java ME Discussion :

SVGEventListener : comment l'implémenter?


Sujet :

Java ME

  1. #1
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    741
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 741
    Points : 808
    Points
    808
    Par défaut SVGEventListener : comment l'implémenter?
    Bonsoir,

    Voici mon nouveau problème, j'essaye d'implémenter le SVGEventListener en m'appuyant sur cette démo.

    Voici mon code :

    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
    60
    61
    62
    63
    64
    65
    66
    67
    import java.io.IOException;
    import java.io.InputStream;
     
    import javax.microedition.lcdui.*;
    import javax.microedition.m2g.SVGAnimator;
    import javax.microedition.m2g.SVGEventListener;
    import javax.microedition.m2g.SVGImage;
    import javax.microedition.m2g.ScalableGraphics;
    import javax.microedition.midlet.*;
     
    import org.w3c.dom.Document;
    import org.w3c.dom.svg.*;
     
     
    public class MyApp extends MIDlet implements CommandListener, SVGEventListener{
        private final Command start=new Command("Start",Command.OK,2);
        private final Command exit=new Command("Exit",Command.EXIT,1);
    	private SvgCanvas canvas;
    	private SVGImage svgImage;
    	private Document doc;
    	private SVGElement logo;
        public MyApp(){
        }
        public void startApp(){
    		try{
    			svgImage=(SVGImage)SVGImage.createImage((InputStream)getClass().getResourceAsStream("/logo.svg"),null);
    			doc=svgImage.getDocument();
    			logo=(SVGElement)doc.getElementById("logo");
    			logo.setTrait("fill","red");
    			canvas=new SvgCanvas(svgImage);
    			canvas.addCommand(start);
    			canvas.addCommand(exit);
    			canvas.setCommandListener(this);
    		}
    		catch(IOException e){
    			e.printStackTrace();
    		}
            Display.getDisplay(this).setCurrent(canvas);
        }
        public void pauseApp(){
        }
        public void destroyApp(boolean unconditional){
        }
        public void commandAction(Command c,Displayable d){
            if (c==exit){
                destroyApp(false);
                notifyDestroyed();
            }
        }
    }
    class SvgCanvas extends Canvas{
        protected SVGImage svgImage;
        protected ScalableGraphics sg=ScalableGraphics.createInstance();
        protected SvgCanvas(final SVGImage svgImage){
            this.svgImage=svgImage;
        }
        public void paint(Graphics g){
    		sg.setRenderingQuality(2);
            g.setColor(219,238,255);
            g.fillRect(0,0,getWidth(),getHeight());
            sg.bindTarget(g);
            svgImage.setViewportWidth(getWidth());
            svgImage.setViewportHeight(getHeight());
            sg.render(0,0,svgImage);
            sg.releaseTarget();
        }
    }


    Le problème est que lorsque je l'implémente tel que dans la démo, j'ai le message suivant:

    MyApp is not abstract and does not override abstract method sizeChanged(int,int) in javax.microedition.m2g.SVGEventListener
    public class MyApp extends MIDlet implements CommandListener, SVGEventListener{

    Ce que je ne comprends pas, c'est pourquoi cela génère une erreur chez moi alors que selon la même méthode, dans la démo, cela n'en génère pas.

    Pourriez-vous m'expliquer, svp?
    Afin d'obtenir plus facilement de l'aide, n'hésitez pas à poster votre code de carte bancaire

    Mon GitHub

    Une alternative à jQuery, Angular, Vue.js, React, ... ? Testez anticore, en quelques secondes à peine !
    (Contributions bienvenues)

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    de quelle démo tu parle? Je ne vois que ton code. Donc sans plus de détails, tu n'aura que des informations vagues comme réponse

    les raisons peuvent être multiples

    -> La démo s'appuie sur une version différente de la librairie que toi, version qui n'avait pas encore cette méthode dans l'interface en question (peu probable)
    -> La classe de la démo étends une autre classe qui fournis la méthode en question
    -> La classe de la démo implémente bien cette méthode
    -> La classe de la démo ne compile pas non plus

  3. #3
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    741
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 741
    Points : 808
    Points
    808
    Par défaut
    Désolé, j'ai oublié d'indiquer le lien, en effet...

    https://meapplicationdevelopers.dev....ing_color.html
    Afin d'obtenir plus facilement de l'aide, n'hésitez pas à poster votre code de carte bancaire

    Mon GitHub

    Une alternative à jQuery, Angular, Vue.js, React, ... ? Testez anticore, en quelques secondes à peine !
    (Contributions bienvenues)

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    La classe présentée sur le site en question n'a rien a voir avec celle que tu présente. Sur le site, toutes les méthodes sont bien implémentées.

    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
        try {
                svgAnimator.invokeAndWait(manipulationRunnable);
            } catch (InterruptedException ie) {
                System.err.println(ie.getMessage());
            }
        }
     
        public void keyReleased(int keyCode) {
        }
     
        public void pointerPressed(int x, int y) {
        }
     
        public void pointerReleased(int x, int y) {
        }
     
        public void hideNotify() {
        }
     
        public void showNotify() {
        }
     
        public void sizeChanged(int width, int height) {
        }
     
        public void pauseApp() {
            interruptAnimation();
        }
     
        public void destroyApp(boolean unconditional) {
            if (state != STATE_STOPPED) {
                svgAnimator.stop();
                state = STATE_STOPPED;
            }
     
            svgAnimator = null;
            svgCanvas = null;
            System.gc();
        }
     
        public void commandAction(Command c, Displayable d) {
            if (c == exitCommand) {
                destroyApp(false);
                notifyDestroyed();
            }
        }

  5. #5
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Salut,

    Ton probleme est que tu implementes l'interface "SVGEventListener" qui impose de definir, entre autre, la fonction sizeChanged(int,int) que tu n'implementes pas (contrairement à la demo en question).

    a+

  6. #6
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    741
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 741
    Points : 808
    Points
    808
    Par défaut
    Ok, merci beaucoup, les gars...

    J'comprends pas trop l'obligation de déclarer des trucs qu'on ne compte pas utiliser (ce n'est présent dans aucun langage que j'ai connu jusqu'ici), mais bon...
    Afin d'obtenir plus facilement de l'aide, n'hésitez pas à poster votre code de carte bancaire

    Mon GitHub

    Une alternative à jQuery, Angular, Vue.js, React, ... ? Testez anticore, en quelques secondes à peine !
    (Contributions bienvenues)

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Et bien dans ce cas, commencer par lire un cours de base en java pour comprendre ce que sont les interfaces

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/12/2006, 16h00
  2. [SDK] Comment l'implémenter via .Net ?
    Par aina0073 dans le forum SDK
    Réponses: 3
    Dernier message: 18/08/2006, 16h52
  3. Euler/Runge-Kunta: Comment les implémenter
    Par progfou dans le forum Algorithmes et structures de données
    Réponses: 21
    Dernier message: 27/02/2006, 22h52
  4. [CR] Où l'obtenir et comment l'implémenter ?
    Par marvelromy dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 04/08/2004, 14h52
  5. Moteur physique : comment l'implémenter ?
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 17/12/2003, 12h56

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