2009-04-27 16 views
2

J'essaie de créer une liste de commandes contextuelles. J'ai mis l'option command.ITEM pour tous mes boutons de commande. Mais je ne pouvais pas trouver un moyen comment fournir les fonctionnalités suivantes:Menus contextuels - Java ME

J'ai une liste de valeurs dites A, B, C Pour A, mon menu de commande doit contenir 2,4 Lorsque je déplace la sélection (curseur) à B, mon menu commandes devrait avoir 1,3 lorsque je passe à C, les commandes devraient avoir 2,1 Encore une fois quand je revenir à A, il devrait avoir le menu de commande A (2,4)

Il peut être utilisé pour une liste de fichiers et de répertoires:

Lorsqu'un fichier est sélectionné, je souhaite afficher les options (commandes) ouvertes, éditer et supprimer. Quand je sélectionne un répertoire, je veux montrer les commandes simplement ouvrir et supprimer.

Merci d'avance pour toute aide orientée dans la bonne direction.

Répondre

1

La spécification pour la classe javax.microedition.lcdui.Form (qui je suppose est ce que vous utilisez) déclare:

« Ces traversantes et les opérations de défilement ne provoquent pas d'événements visibles application »

Il n'y a également pas de méthode appelé avant que le menu de commande s'affiche. Tout cela signifie que vous ne pouvez pas faire ce que vous voulez ici en utilisant un formulaire.

Selon l'implémentation de J2ME sur le téléphone spécifique que vous ciblez, javax.microedition.lcdui.CustomItem.getInteractionModes() peut vous indiquer si vous pouvez utiliser un seul CustomItem dans votre formulaire pour créer un menu contextuel. Le seul moyen sûr de faire cela sur tous les téléphones est d'utiliser un javax.microedition.lcdui.Canvas et de ré-implémenter les contrôles dont vous avez besoin en les dessinant vous-même. Vous pouvez ensuite garder une trace de celui qui est "sélectionné" et remplir votre propre menu de commande avant de l'afficher en réponse aux événements keyPressed() de bas niveau.

Vous voudrez peut-être regarder dans la bibliothèque open source LWUIT pour une solution intermédiaire.