Créer un objet graphique (cliquable) en J2ME

Créer un objet graphique (cliquable) en J2ME - Divers - Programmation

Marsh Posté le 27-03-2005 à 17:21:29    

Bonjour, tout le monde,
J'ai un petit soucis de conception pour une application qui doit tourner sur PDA.
Je dois créer des objets graphique (je ne sais pas comment le nommer autrement) qui devront être cliquable par l'utilisateur de l'application (grâce au stylet).
Je n'arrive pas à trouver comment faire, pour l'instant j'arrive à recevoir l'information comme quoi l'utilsateur clique sur l'écran (grâce à la fonction pointerPressed() que je redénifie dans monCanvas).
Sinon j'ai trouvé en fouillant dans l'api IBM fourni avec websphere qu'il existe une classe CanvasComponent, c'est surement quelques chose comme ça qu'il faut que j'utilise mais j'arrive pas à en hériter (à cause de la visibilité).
 
Si quelqu'un pouvait me guider dans une solution qui existe deja ou qu'il vu, ca m'aiderait vraiment, cela fait un moment que je bloque sur ce problème.
 
Merci pour tout.

Reply

Marsh Posté le 27-03-2005 à 17:21:29   

Reply

Marsh Posté le 28-03-2005 à 13:27:59    

up

Reply

Marsh Posté le 29-03-2005 à 23:43:43    

Regarde du coté de la classe "CustomItem", elle sert à faire des composants personnalisés (une methode paint pour dessinner ce que tu veux deds et ca propre gestion de evenement (pointerPressed etc))
 
T'as un exemple dans le projet "UIDemo" fourni avec le wireless toolik 2.2 de sun.

Reply

Marsh Posté le 09-04-2005 à 11:33:19    

merci Diody, j'ai tester, mais j'arrive toujours pas a gérer les evennements.
Est-ce que je dois implémenté ItemCommandListener ?
Parce que j'ai le code suivant, et j'ai pas l'impression que la méthode pointerPressed() est invoqué quand l'utilisateur clique sur le CustomItem.


public class ItemIdea extends CustomItem implements ItemCommandListener {
...
 public void pointerPressed(int x, int y) {
   
   
  //theDataModelIdea.setActiveIdea(theIdea);
   
  System.out.println("J'ai cliqué en x = "+(new Integer(x)).toString());
   
  //this.repaint();
 
 }
...
}


 
Si quelqu'un pouvait me dire si je m'y prend mal, ca pourrait vraiment m'aider, je cherche sur le net depuis un moment.
 
merci

Reply

Marsh Posté le 10-04-2005 à 14:23:17    

en gros je me demande s'il faut utiliser ItemCommandListener ici, ou bien dans mon Form ou bien pas du tout !!

Reply

Marsh Posté le 11-04-2005 à 12:13:08    

En fait j'ai fait quelque test et c'est vrai que sur mon PocketPC j'ai jamais réussi à utiliser les événements de bas niveau (pointerPressed) dans un CustomItem hum.
 
Sinon il y a une autre solution, tout les Objets instanciant une classe qui dérive de la classe Item peuvent être associé à un objet Command, tu peux alors utiliser directement un objet ImageItem. Donc oui il faut utiliser l'interface ItemCommandListener
 
Un petit exemple :
 

Code :
  1. public class exemple extends Form implements ItemCommandListener {
  2.   private Command CMD;
  3.   private ImageItem imageItem;
  4.   public exemple () {
  5.     imageItem = new ImageItem(...);
  6.     CMD = new Command(...);
  7.     imageItem.setDefaultCommand(CMD);
  8.     imageItem.setItemCommandListener(this);
  9.     append(imageItem);
  10.   } 
  11.   public void commandAction(Command c, Item i) {
  12.     if (c == CMD && i == imageItem) {
  13.       // Action a effectuer quand on click sur l'image
  14.     }
  15.   }
  16. }


Message édité par Diody le 11-04-2005 à 12:40:25
Reply

Marsh Posté le 11-04-2005 à 17:49:17    

j'ai réussi dans la nuit d'hier à aujourd'hui.
 
Le customItem était a peu près bon sauf, qu'il fallait juste ajouter l'implémentation de la méthode traverse (meme si elle ne fait rien :
 

Code :
  1. public class ItemIdea extends CustomItem {
  2. ...
  3. protected void pointerPressed(int x, int y) {
  4.      //se déclenche bien lors tu l'utilisation du stylet
  5.      ...
  6. }
  7. //mais il faut implémenter cette méthode.
  8. protected boolean traverse( int dir, int viewportWidth, int viewportHeight, int[] visRect_inout ) {
  9.      return true;
  10. }
  11. }


 
Et donc maintenant ca marche, il vrai qu'il faut que le Form implémente l'interface ItemCommandListener
et d'ajouter un listener à chaque item.
 

Code :
  1. anItemIdea = new ItemIdea(anIdea,myDatas,this,2);
  2. anItemIdea.setItemCommandListener(this);


 
Et les objets (CustomItem) sont cliquables.
 
Mon problème est règlé, je peux continuer mon développement tranquilement.
 
Merci pour tout
 

Reply

Marsh Posté le 09-12-2006 à 11:44:04    

bjr,
 
j'ai un probleme pr inserer + images avec les touche du portable, j arrive pas a créer +methodes paint
 
est ce que kelkun sai commen faire ou s'il y a une autre possibile
 
merci d'avance,


---------------
work toghether
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed