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

AWT/Swing Java Discussion :

[AWT/SWING] Placement de points


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Par défaut [AWT/SWING] Placement de points
    Bonjour,

    alors, voila, je vous explique mon probleme:

    Je suis en train de realiser une interface de simulation de maquette de trains, pour une société.
    Et donc, dans mon interface (ci dessous), je voudrais faire apparaitre des points (seulement 2 car il n'y aura que 2 trains) pour indiquer ou se trouve le train sur le circuit.

    Hors, je n'ai aucune idée de comment m'y prendre.
    Auriez vous une piste a me donner ?

    merci

    Pour infos, l'image est au format JPG et chargée de l'exterieur dans un JPanel.


  2. #2
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Selon moi, il te faut faire une première étape qui serait de modéliser ton circuit... Là, je ne sais pas trop ce que tu peux y faire dessus, mais cela pourrait être vu, d'une façon basique, comme un ensemble de points (coordonnées), ou un ensemble de figures géométriques...

    Ensuite, à partir ce modèle, tes trains occuperaient des coordonnées précises et se déplaceraient sur ce modèle en suivant ces points/figures géométriques...

    L'affichage ne te posera aucun problème si ton modèle de données est bien conçu

    Si le circuit est toujours le même, la modélisation du circuit pourra se faire facilement... Si le circuit peut changer, et est défini par une image JPG de la qualité de celle qu'on peut voir, je te souhaite bon courage pour réussir modéliser le circuit correspondant (voir des algos de traitements d'images...)

    Bref, mon aide est vague, mais en tout cas, une chose est sûre selon moi : il te faut modéliser ce qu'est un circuit (et un train) en POO

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Par défaut
    salut Claythest,

    alors, en fait, derriere cet affichage, il y a bien un circuit et un train de modeliser..

    Le circuit est composé de rails et d'aiguillages, et le train se deplace sur les rails qui sont initialisés a l'appel du constructeur circuit...

    De plus, il n'y aura bien qu'un seul circuit, qui est celui que tu vois sur l'interface...

    En fait, ce circuit existe bien dans la realité, et la photo en est tirée (bon, elle est pas super pcq je l'ai mal retouchée...

    Donc, il faudrait que j'associe des coordonnées a chaque rail, qui me la redonnerait pour l'affichage, si j'ai bien compris...

    Je sens que ca va etre long car il y a 72 rails, et 12 aiguillages...

    Par contre, existe il une methode deja implementée dans l'API qui permet de placer quelque chose a des coordonnées precises ???

  4. #4
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Citation Envoyé par sebpsi
    Par contre, existe il une methode deja implementée dans l'API qui permet de placer quelque chose a des coordonnées precises ???
    Ben oui, il te faudra dessiner ton train aux coordonnées précises... Ca se fait en Swing

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Le problème dans ton cas, c'est qu'il va falloir dessiner ton circuit et tes trains, car déterminer à partir de l'image le circuit ça va être coton.

    Il vaudrait mieux que tu ais une classe Circuit, indiquant les aiguillages, le tracé et ainsi de suite (à priori le tracé sera consitué d'un liste de GeneralPath (un pour chaque ligne (ligne au sens chemin de fer), puis une ArrayList contenant les diverses interconnexions entre chaque ligne.

    Donc ça amêne à une classe Ligne contenant un GeneralPath décrivant la ligne, une classe Interconnexion contenant deux lignes et une position (un Point2D par exemple)ainsi que le sens. Et enfin une classe circuit contenenant deux listes, une de Lignes et une d'Interconnexions.



    Ensuite pour le dessin il te suffira de prendre un JPanel et de dessiner dessus les GeneralPath contenus dans tes lignes (faire une méthode dans la classe ligne prenant un paramètre de type Graphics2D et faisant une draw du GeneralPath (qui implémente l'Interface Shape donc c'est faisable))

    Enfin pour débuter avec le dessin sous swing c'est pas forcément le plus facile, tu as intérêt a bien plancher sur ta modélisation, mais je dis direct que tu ne pourras pas bosser avec ton Image.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Par défaut
    Salut Sinok, merci pour ta reponse...
    alors, je fais apporter quelques precisions:

    Citation Envoyé par sinok
    Le problème dans ton cas, c'est qu'il va falloir dessiner ton circuit et tes trains, car déterminer à partir de l'image le circuit ça va être coton.

    Il vaudrait mieux que tu ais une classe Circuit, indiquant les aiguillages, le tracé et ainsi de suite (à priori le tracé sera consitué d'un liste de GeneralPath (un pour chaque ligne (ligne au sens chemin de fer), puis une ArrayList contenant les diverses interconnexions entre chaque ligne.

    Donc ça amêne à une classe Ligne contenant un GeneralPath décrivant la ligne, une classe Interconnexion contenant deux lignes et une position (un Point2D par exemple)ainsi que le sens. Et enfin une classe circuit contenenant deux listes, une de Lignes et une d'Interconnexions.
    Alors, voila ce que j'ai dans mon code:

    Une classe circuit qui initialise les rails et les aiguillages entre eux. (J'ai pas tout mis, la classe est assez longue...)

    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
    public class circuit {
     
    	private rail raildepartvoiture = new rail(1);
     
    	public circuit(){
     
    		/**
                     * creation du troncon exterieur divisé en 6 troncons de 6 et 5 rails alternativement
                     * reliés entre eux par des aiguillages Fixes et Electriques alternativement aussi...
                     */
     
    //		 creation des rails du troncon 1 et du 1er aiguillage  
    		rail railtronconext12 = new rail(12);
    		rail railtronconext13 = new rail(13);
    		rail railtronconext14 = new rail(14);
    		rail railtronconext15 = new rail(15);
    		rail railtronconext16 = new rail(16);
     
    		aiguillageFixe aig12 = new aiguillageFixe();
     
    //		 creation des rails du troncon 2 et du 2eme aiguillage  
    		rail railtronconext21 = new rail(21);
    		rail railtronconext22 = new rail(22);
    		rail railtronconext23 = new rail(23);
    		rail railtronconext24 = new rail(24);
    		rail railtronconext25 = new rail(25);
     
    		aiguillageElectrique aig23 = new aiguillageElectrique();
     
                    relierRail(raildepartvoiture,railtronconext12);
    		relierRail(railtronconext12,railtronconext13);
    		relierRail(railtronconext13,railtronconext14 );
    		relierRail(railtronconext14,railtronconext15);
    		relierRail(railtronconext15,railtronconext16);
     
    }
     
    	private void relierRail( rail rail1, rail rail2){
    		rail1.setRailSortie(rail2);
    		rail2.setRailEntree(rail1);
     
    	}
    Une classe Rail qui me créée les rails:

    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
    public class rail {
     
    	private rail railentree;
    	private rail railsortie;
    	private int i = 0;
    	private boolean estSurRail = false;
    	private int tempsDeTransit;
     
    	public rail(){ }
     
    	public rail(int numero){
    		i = numero;
    	}
     
    	public void setRailEntree(rail railEntree){
    		railentree = railEntree;
    	}
     
    	public void setRailSortie(rail railSortie){
    		railsortie = railSortie;
    	}
     
    	public rail getRailEntree(){
    		return railentree;
    	}
     
    	public rail getRailSortie(){
    		return railsortie;
    	}
     
    	public void trainSurRail(){
    		estSurRail = true;
    	}
     
    	public void trainPlusSurRail(){
    		estSurRail = false;
    	}
     
    	public boolean etatRail(){
    		return estSurRail;
    	}
     
    	public int numeroRail(){
    		return i;
    	}
    }
    Une classe aiguillage (que je ne mets pas, mais je pourrais la rajouter si tu veux), composée elle-meme de rails.

    Et une classe train qui modelise le train:

    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
     
    public class train {
     
    	private rail estSur;
     
    	public void train(){ }
     
    	public void train(rail railDepart){
    		estSur = railDepart;
    		estSur.trainSurRail();
    	}
     
    	public int OuEstLeTrain(){
    		return estSur.numeroRail();
    	}
     
    	public void placerTrain(rail railDepart){
    		estSur = railDepart;
    		estSur.trainSurRail();
    	}
     
    	public void AvancerTrain(){
    		estSur.trainPlusSurRail();
    		estSur = estSur.getRailSortie();
    		estSur.trainSurRail();
    	}
     
    }
    Donc, en considerant mes classes internes, sachant que le circuit est unique, est-il possible de mettre des attributs, on va dire coordonnées par exemple dans ma classe Rail qui pourront etre retournées pour afficher un point (je ne demande pas une modelisation complexe pour le train, juste un point de couleur rouge, par exemple) sur ma photo ? Car, de toutes facons, le circuit est unique, ne changera jamais, et donc sera initialisé a chaque fois de la meme maniere..

Discussions similaires

  1. [AWT/Swing] BorderLayout --> [SWT] ???Layout
    Par ®om dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 08/05/2006, 19h19
  2. faire un call graph en java avec awt/swing ou autre
    Par max25b dans le forum Graphisme
    Réponses: 2
    Dernier message: 06/05/2006, 14h32
  3. [AWT][Swing]JScrollPane et JTabbedPane
    Par willowII dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 04/11/2005, 09h54
  4. [Info]Conflit AWT-SWING
    Par leminipouce dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 07/04/2005, 20h15
  5. [Info]AWT, SWING, SWT
    Par ben23 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 13/04/2004, 10h28

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