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 Discussion :

Conseils conception d'un programme


Sujet :

Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Par défaut Conseils conception d'un programme
    Bonjour,

    Me voici ici, car j'éprouve des doutes sur la conception de mon programme.

    L'objectif est simple :
    - 1] Créer une fenêtre,
    - 2] Dans cette fenêtre avoir 3 espaces distincts,
    - 3] Dans chaque espace pouvoir y mettre des images,
    - 4] Et enfin pouvoir cliquer glisser une image d'un espace dans l'un des 2 autres

    Exemple :
    Visualisation des 3 espaces :
    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
     
    +-------------------------------------+
    |                                     |
    |                                     |
    |                                     |
    +------------------+------------------+
    |                  |                  |
    |                  |                  |
    |                  |                  |
    |                  |                  |
    |                  |                  |
    |                  |                  |
    |                  |                  |
    |                  |                  |
    |                  |                  |
    +------------------+------------------+
    Visualisation avec des images :

    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
     
    +-------------------------------------+
    | +--+  +--+  +--+   +--+  +--+  +--+ |
    | |  |  |  |  |  |   |  |  |  |  |  | |
    | +--+  +--+  +--+   +--+  +--+  +--+ |
    +------------------+------------------+
    |  +--+ +--+ +--+  |  +--+ +--+ +--+  |
    |  |  | |  | |  |  |  |  | |  | |  |  |
    |  +--+ +--+ +--+  |  +--+ +--+ +--+  |
    |  +--+ +--+ +--+  |  +--+ +--+ +--+  |
    |  |  | |  | |  |  |  |  | |  | |  |  |
    |  +--+ +--+ +--+  |  +--+ +--+ +--+  |
    |  +--+ +--+ +--+  |  +--+ +--+ +--+  |
    |  |  | |  | |  |  |  |  | |  | |  |  |
    |  +--+ +--+ +--+  |  +--+ +--+ +--+  |
    +------------------+------------------+
    Ce que j'ai fait :
    - Une classe qui contient ma JFrame :
    - J'ai créé 3 classes qui héritent de JPanel : HAUT GAUCHE et DROITE,
    Ces 3 jpanels sont dans le constructeur de ma Jframe,
    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
     
    public class MaFenetre extends JFrame {
    	Haut haut;
    	Gauche gauche;
    	Droit droit;
     
    	public MaFenetre() {
    		// Toute l'initialisation
    		this.initDebut();
     
    		// Ce sont ces lignes qui me gênent car je transmet la fenêtre
    		// Cela me choque mais m'est utile pour la suite
    		this.haut = new Haut(this);
    		this.gauche = new Gauche(this);
    		this.droit = new Droit(this);
     
    		// Je passe le layout qui fera peut etre un jour l'objet d'une question^^
    		this.getContentPane().add(this.haut);
    		this.getContentPane().add(this.gauche);
    		this.getContentPane().add(this.droit);
     
    		this.initFin();
    	}
    }
     
    //Example pour Haut :
    public class Haut extends JPanel {
    	MaFenetre maFenetre;
    	ArrayList<String> mesAdressesDImage;
     
    	public Gauche(MaFenetre f) {
    		this.maFenetre = f;
     
    		// J'obtient ma liste des adresse d'images a l'aide d'un fichier qui les listes
    		this.initMesAdresse();
    	}
     
    	public void afficherImage() {
    		for(String s : this.mesAdressesDImage) {
    			SmallPicture p = new SmallPicture(s, this.maFenetre);
    			// J'ajoute le JPanel a mon panel actuel, j'ommet une fois de plus le layout
    			this.add(p);
    		}
    	}
    }
    - J'ai aussi une classe qui hérite de JPanel et implemente MouseListener, et qui se charge d'afficher les images
    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
     
    public class SmallPicture extends JPanel implements MouseListener{
     
    	BufferedImage picture;
    	MaFenete maFenetre;
     
    	public SmallPicture(String adresseImg, MaFenetre f) {
    		this.picture = null;
    		this.maFenetre = f;
     
    		try {
    		    this.pictureCard = ImageIO.read(new File(adresseImg));
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
     
    		this.addMouseListener(this);
    	}
     
    	public void paintComponent(Graphics g) {
    		super.paintComponent(g);
    		if(this.picture != null) {
    			g.drawImage(this.picture, 0, 0, 60, 44, 17, 44, 295, 249, this);
    		}
    	}
     
    	@Override
    	public void mouseClicked(MouseEvent e) {
    		// Je supprime le visuel du jpanel et je repaint
    		this.setVisible(false);
    		this.repaint();
     
    		// J'efface l'image du jpanel gauche
    		this.maFenetre.gauche.remove(this);
    		// Je l'ajoute au jpanel haut
    		this.maFenetre.haut.add(this);
    		// Je le rend a nouveau visible et je repaint
    		this.setVisible(true);
    		this.repaint();
    	}
    }
    L'objectif final n'est pas tout a fait atteint, mais c'est pas ce qui à l'heure actuel me dérange le plus.
    Ce qui me gêne c'est que dans chaque classe que j'ai, il y a toujours un attribut avec la fenêtre de départ. Cela vous dérange t'il ? Si oui comment feriez vous ?
    (Je ne demande pas de code juste les "lignes" directrice.)

    Merci Bien de m'avoir lu =)

  2. #2
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Bonjour,

    Ce que tu peux faire ici c'est implémenter mouseListener dans MaFenetre,
    tu crées tes smallPicture dans MaFenetre, en même temps tu leur ajoutes addMouseListener(this) et tu les ajoutes au panel souhaité(ex: haut.add(picture)) ainsi plus de référence à MaFenetre dans les autres classes.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Par défaut
    Ok merci ludomacho,

    Mais avoir le listener dans la smallPicture a l'avantage de nous faire connaitre directement l'image sur laquelle nous "cliquons".

    Si le fait d'avoir la frame dans mes images est juste un pointeur a sauvegarder. C'est pas cher payer (Enfin j'en sais rien c'est juste un avis).

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Bonjour,

    Libre à toi de faire comme tu veux par contre sache que tu peux connaitre l'image cliquée grace à la méthode getSource() de MouseEvent....

Discussions similaires

  1. conseil conception espace client
    Par grinder59 dans le forum Langage
    Réponses: 9
    Dernier message: 04/04/2007, 11h46
  2. Conseils sur structure de programme
    Par RR instinct dans le forum Langage
    Réponses: 6
    Dernier message: 21/09/2006, 14h44
  3. Réponses: 16
    Dernier message: 15/11/2005, 20h07
  4. Conseils pour démarrer en programmation ?
    Par Osirex dans le forum Débuter
    Réponses: 5
    Dernier message: 06/10/2005, 18h28
  5. [Débutant(e)][Conception] prob de programmation objet
    Par gregorian dans le forum Général Java
    Réponses: 3
    Dernier message: 07/07/2005, 11h20

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