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 :

KeyPressed et display.SetCurrent


Sujet :

Java ME

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Par défaut KeyPressed et display.SetCurrent
    Bonjour

    Je suis en train de développer une petite application sur appareils mobile qui affiche différentes listes en fonction des touches appuyées.
    Cependant, une fois que la liste est affichée, je n'ai plus accès aux keyPressed. Je me doute qu'il y a une concurrence entre les deux keyPressed, mais comment afficher ma liste alors tout en laissant la main au keyPressed ?

    Voici le code de KeyCode.java
    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
    68
    69
     
    import javax.microedition.lcdui.Choice;
    import javax.microedition.lcdui.Display;
    import javax.microedition.lcdui.List;
    import javax.microedition.midlet.MIDlet;
     
     
    public class KeyCode extends MIDlet { //implements CommandListener{
    	List But;
    	List Instruction;
      /*  private Command exitCommand = new Command("Exit", Command.BACK, 1);
        private Command playCommand = new Command("Play", Command.OK, 1);
    */
        public Display display;
    	KeyCodeCanvas kcc = new KeyCodeCanvas(this);
     
    	public void startApp() {
    		//super();
    		display  = Display.getDisplay(this);
    		initPlayList();
    		display.setCurrent(kcc);
    		//But.addCommand(exitCommand);
     
    		//display.setCurrent(But);
     
    	}
     
     
     
    	public void pauseApp() {
    	}
     
    	public void destroyApp(boolean unconditional) {
    		display.setCurrent(null);
    	}
     
    /*	public void commandAction(Command c, Displayable s) {
    	 	if (c == exitCommand) {
    	   		destroyApp(true);
    	   		notifyDestroyed();
    	 	} 
    	   	else if ((s == But && c == List.SELECT_COMMAND) || c == playCommand) {
    	    	affiche_liste();
    	    }
    	 }
    */
    	 public void affiche_liste(){
    	   	display.setCurrent(Instruction);
    	 }
     
    	 private void initPlayList() {
    		//theList  = new List("MIDP Audio Player", Choice.IMPLICIT);
    	   	But = new List("Liste des objectifs", Choice.IMPLICIT);
    	   	But.append("B1", null);
    	   	But.append("B2", null);
    	   	But.append("B3", null); 
     
    		/*But.addCommand(exitCommand);
    		But.addCommand(playCommand);
    		But.setCommandListener(this);
    	*/
    		String LInst[] = {"I1", "I2", "I3"};
    		Instruction = new List("Liste des instructions", Choice.IMPLICIT, LInst, null);
    	 }
     
    	 public void quit() {
    		 notifyDestroyed();
    	 }
    }
    et celui du KeyCodeCanvas.java
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    import javax.microedition.lcdui.Canvas;
    import javax.microedition.lcdui.Graphics;
     
    /**
     * A canvas that displays the key code corresponding to the key pressed.
     */
    public class KeyCodeCanvas extends Canvas {
     
    	private KeyCode myMIDlet;
     
    	public int myCurrentTouche = 0;
     
    	/**
             * just set a handle back to the MIDlet.
             */
    	public KeyCodeCanvas(final KeyCode midlet) {
    		this.myMIDlet = midlet;
    	}
     
    	/**
             * Paint the key code corresponding to the key that has been pressed.
             * 
             * Note that this is far from optimized!!!
             */
    	public void paint(final Graphics g) {
     
     
    	}
    	public void developper() {
    		myMIDlet.display.setCurrent(myMIDlet.Instruction);
     
     
     
    	}
     	public void ranger (){
     		myMIDlet.display.setCurrent(myMIDlet.But);
     
    	}
    	public void item_precedent(){
     
    	}
    	public void item_suivant(){
     
    	}
    	public void precedent(){
     
    	}
    	public void menu(){
     
    	}
    	public void keyPressed(final int keyCode) {
    		this.myCurrentTouche = keyCode;
    		System.out.println("Delete failed: " + this.myCurrentTouche);
    		// flèche droite
    		if (this.myCurrentTouche == -4 ) {
    			developper();
    		} 
    		// flèche gauche
    		if (this.myCurrentTouche == -3 ) {
    			ranger();
    		}
    		// bouton central
    		if (this.myCurrentTouche == -5 ) {
    			menu();
    		}
    		// bouton back
    		if (this.myCurrentTouche == -6 ) {
    			precedent();
    		}
    		// flèche haut
    		if (this.myCurrentTouche == -1){
    			item_precedent();			
    		}
    		if (this.myCurrentTouche == -2){
    			item_suivant();			
    		}
    		repaint();
     
    	}
     
    }
    Merci

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2004
    Messages : 187
    Par défaut
    C'est normal, les actions de la liste doivent être gérées par un CommandListener.

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Par défaut
    Merci pour ta réponse, mais je ne vois pas comment je peux ajouter ces KeyCode au CommandListener.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2004
    Messages : 187
    Par défaut
    Tu ne dois pas ajouter des keyCode puisque tu dois utiliser des Command!

  5. #5
    Membre averti
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Par défaut
    Je prefererai utiliser bien sur des Command, cependant, je n'ai pas trouvé comment accéder aux Commandes codant les flèches et les numéros du clavier autrement que par les keyCode.
    Si c'est possible, comment peut on créer des command pour les flèches ?

    Le constructeur de la classe Command est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new Command(String Nom, CommandType, Priority);
    en sachant que le CommandType ne peut etre que BACK, OK, SCREEN, HELP, CANCEL, ITEM

    On ne retrouve donc pas l'accès aux fleches et au pavé numérique par ces CommandType.

    Donc ma question est comment créer une commande correspondant à une flèche ?

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2004
    Messages : 187
    Par défaut
    Sur des listes les touches numérotées ne sont pas gérées, les flèches sont gérées par le système, ainsi que la sélection donc tu n'as pas à t'en occuper.
    Il ne te reste donc uniquement les menu associés aux soft keys à gérer!
    Si ce comportement ne te satisfait pas, il faut alors que tu recrées une liste toi-même dans un Canvas, tu pourras alors choisir le comportement que tu souhaites.

Discussions similaires

  1. Display Format d'une cellule d'une DBGrid
    Par Wilco dans le forum Bases de données
    Réponses: 5
    Dernier message: 21/10/2004, 13h00
  2. XLIB: extension GLX missing on display "...
    Par vince3320 dans le forum OpenGL
    Réponses: 9
    Dernier message: 29/07/2004, 15h48
  3. Réponses: 15
    Dernier message: 20/07/2004, 09h22
  4. Solution pas terrible mais ok [XFree] display
    Par sdeb dans le forum Applications et environnements graphiques
    Réponses: 5
    Dernier message: 06/01/2004, 20h46
  5. [ websphere] problème d'export DISPLAY
    Par gogozep001 dans le forum Websphere
    Réponses: 8
    Dernier message: 04/09/2003, 13h31

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