Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

directive conditionnelle, j2me, j2se

3 réponses
Avatar
ricoh51
Bonjour,
j'ai 2 projets en cours, le premier en j2me et le second en j2se. J'ai
une classe commune aux 2 projets, avec une petite différence :
Pour dessiner dans un canvas, en j2me je dois faire
import javax.microedition.lcdui.*;
et en j2se :
import java.awt.*;

Comment faire pour que ma classe soit utilisable dans les 2 projets,
sans rien changer?

merci

eric

--
http://ricoh51.free.fr/

3 réponses

Avatar
TestMan
Bonjour,
j'ai 2 projets en cours, le premier en j2me et le second en j2se. J'ai
une classe commune aux 2 projets, avec une petite différence :
Pour dessiner dans un canvas, en j2me je dois faire
import javax.microedition.lcdui.*;
et en j2se :
import java.awt.*;

Comment faire pour que ma classe soit utilisable dans les 2 projets,
sans rien changer?


Bonjour,

Les plateformes étant trés différentes dans leur capacité, il ne serait
pas facile de faire de simple "directive conditionelle" de toute façon
(cf. directive dans netbeans par exemple).

La solution est donc plus de séparer ton application en deux groupes
distincs : ta logique d'affichage et ta logique métier (service ?).

La logique d'affichage étant présente en deux implémentations
différentes (une pour midlet, une pour awt/swing), les deux
implémentants/utilisant les mêmes interfaces.

Ne restera qu'au démarage de l'application de lancer l'implémentation
que tu préfères.

Si l'utilisation de la version AWT/swing pour toi est marginale, alors
tu peux envisager utiliser des kits type le "bon vieux" me4se et ainsi
retomber dans un cas de configuration traitable par directive. Mais
l'ergonomie pour ses utilisateurs n'atteindra jamais des sommets
d'intégration ...

A+
TM

Avatar
ricoh51
TestMan a exprimé avec précision :
Bonjour,
j'ai 2 projets en cours, le premier en j2me et le second en j2se. J'ai une
classe commune aux 2 projets, avec une petite différence :
Pour dessiner dans un canvas, en j2me je dois faire
import javax.microedition.lcdui.*;
et en j2se :
import java.awt.*;

Comment faire pour que ma classe soit utilisable dans les 2 projets, sans
rien changer?


Bonjour,

Les plateformes étant trés différentes dans leur capacité, il ne serait pas
facile de faire de simple "directive conditionelle" de toute façon (cf.
directive dans netbeans par exemple).


mmh, je viens de trouver ça :
//#ifdef MIDP
import javax.microedition.lcdui.*;
//#else
import java.awt.*;
//#endif

ça a l'air de fonctionner, c'est spécifique à NetBeans je suppose?



La solution est donc plus de séparer ton application en deux groupes distincs :
ta logique d'affichage et ta logique métier (service ?).


c'est ce que je fais, mais je trouvais sympa de pouvoir utiliser la
même classe pour dessiner mes canvas


merci pour ta réponse

eric

--
http://ricoh51.free.fr/


Avatar
TestMan
Bonjour,

TestMan a exprimé avec précision :
Bonjour,
j'ai 2 projets en cours, le premier en j2me et le second en j2se.
J'ai une classe commune aux 2 projets, avec une petite différence :
Pour dessiner dans un canvas, en j2me je dois faire
import javax.microedition.lcdui.*;
et en j2se :
import java.awt.*;

Comment faire pour que ma classe soit utilisable dans les 2 projets,
sans rien changer?


Bonjour,

Les plateformes étant trés différentes dans leur capacité, il ne
serait pas facile de faire de simple "directive conditionelle" de
toute façon (cf. directive dans netbeans par exemple).


mmh, je viens de trouver ça :
//#ifdef MIDP
import javax.microedition.lcdui.*;
//#else
import java.awt.*;
//#endif

ça a l'air de fonctionner, c'est spécifique à NetBeans je suppose?


Spécifique, moche (AMHA), et limité en terme de gestion de config ...
mais, pour les dingues de C/C++ drogués aux #define, indispensable :(

La solution est donc plus de séparer ton application en deux groupes
distincs : ta logique d'affichage et ta logique métier (service ?).


c'est ce que je fais, mais je trouvais sympa de pouvoir utiliser la même
classe pour dessiner mes canvas


A moins d'utiliser une techno de rendu commune type SVG, je vois pas
trop comment ...

merci pour ta réponse


Tant que ça aide, c'est le principal ... bon là sur le coup, je suis pas
sûr ;-)

A+
TM