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

Interfaces Graphiques en Java Discussion :

comment creer une simple application graphique.


Sujet :

Interfaces Graphiques en Java

  1. #1
    pug
    pug est déconnecté
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 12
    Points : 1
    Points
    1
    Par défaut comment creer une simple application graphique.
    Salut à tous et d'avance merci à ceux qui prendront la peine de lire ce message et de me répondre.

    Alors voila en faite je voudrais créer une frame contenant un grand carre qui lui meme contient 100 boules de couleur aléatoires. Et quand je clique dessus si une de meme couleur est collée a elle, je voudrais qu'elle disparaissent et que les boules qui sont au dessus d'elle descendent. Sauf que j'ai pas encore trouvé comment faire, et en plus je ne sais meme pas si on peut créer une acionListener sur les boules . Car quand c est sur les bulles que je doit cliquer.
    En un mot le truc ue je veux faire ressemble a un jawbreaker.

    Merci a ceux qui sauront me conseiller.

  2. #2
    Membre habitué
    Inscrit en
    avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : avril 2003
    Messages : 159
    Points : 139
    Points
    139
    Par défaut
    Pour tes boules, tu peux tres bien les faire hériter de JPanel pu JButton et rédéfinir la facon dont ils sont peints. Sinon pour le placement, un layout adapté sera surement tres efficace.

    A quel niveau bloques tu exactement ?

  3. #3
    pug
    pug est déconnecté
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Bah en fait je debute en java donc je connais un peu les frame, ca ca va. mais les Jbutton et les jFrame la je vois pas comment faire. J ai aussi entendu parler de Canvas mais je sais pas trop ce que c est.

    l'heritage je connais car ca fait lgt que je fais du C++.

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    juillet 2002
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : juillet 2002
    Messages : 701
    Points : 392
    Points
    392
    Par défaut
    J'ai un peu de mal à comprendre la grammaire de vos phrases.

    Pour ce que j'ai compris, en tout simple:
    - ecrire une class extends JPanel qui va contenir les boules et gérer les actions et les layouts des boules.
    - le JPanel doit etre en AbsoluteLayout pour maitriser la position des boules
    - remplir le panel de JButtons (je pense que ca convient) avec dedans l'icone de la boule. On peut avoir un action listener dessus. Il faut maintenir dans un tableau les références des buttons et leurs positions x,y dans le panel. Ainsi quand un bouton est supprimé il suffit de screener le tableau et de décaler les boutons qui ont lieu de l'etre.

    Au lieu d'un bouton le mieux est d'utiliser une autre class qui extends jpanel aussi, d'y affecter un mouse listener, et de surcharger la méthode paint pour dessiner le rond coloré (moins de charge mémoire)

  5. #5
    pug
    pug est déconnecté
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Alors je suis peu etre une tache c est possible mais la avec ce que tu me dis, je n'ai pas la moindre idée de comment coder un truc pareil.))

  6. #6
    Membre habitué
    Inscrit en
    avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : avril 2003
    Messages : 159
    Points : 139
    Points
    139
    Par défaut
    La notre de grammaire ? !!!

    Sinon, tu dois créer une class Boule qui hérite de JPanel (ou JButton). En redéfinissant la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void paintComponent(Graphics g)
    tu peux donner n'importe quel aspect graphique à ton composant.
    Par exemple tu peux dessiner un cercle, charger une image...

    Sinon pour gérér les positions de tes boules dans ta frame, il faut que tu utilises un Layout (bien plus propre que placer les boules en position absolue).
    Un layout est un composant chargé de placer tes objets graphiques dans ta frame. Par exemple, le GridLayout te permet de disposer tes éléments suivants une grille.

    Je sais pas si j'ai été assez clair. N'hésite pas à poser des questions.

  7. #7
    pug
    pug est déconnecté
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    merdi deja de prendre de ton temps pour moi.

    Mais une fois que j ai créé cette classe je fais comment pour créer le carré qui va les contenir? Et pour leur mettre une couleur aléatoire? et si je prefere mettre une image de boule? ou je peux trouver l image de boules rouge verte bleur noire...?

    lol ca en fait des questions mais j en ai bcp dsl

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    juillet 2002
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : juillet 2002
    Messages : 701
    Points : 392
    Points
    392
    Par défaut
    commence par coder le panel qui contient les boules, et à le coller dans la jframe. En te filera un coup de main à mesure.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public static main(...){
    JFrame myFrame=new JFrame();
    BouleContainer monContainer=new BouleContainer(); //extends JPanel
    myFrame.getContentPane().add(monContainer);
    myFrame.setVisible(true);
    }

  9. #9
    pug
    pug est déconnecté
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    mais je peux pas creer simplement une frame qui cntiendra les boules??

  10. #10
    Membre habitué
    Inscrit en
    avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : avril 2003
    Messages : 159
    Points : 139
    Points
    139
    Par défaut
    Si mais le mieux est de passer par un composant qui contient toutes les boules. Ta frame elle ne contient que ce conteneur de boules.

  11. #11
    pug
    pug est déconnecté
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    C est quoi la difference entre une Jframe et une Frame car dans les deux cas elle contient toutes mes boules non?

  12. #12
    Membre habitué
    Inscrit en
    avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : avril 2003
    Messages : 159
    Points : 139
    Points
    139
    Par défaut
    Au début java ne fournissait qu'un type d'applications graphiques : AWT.
    Pour palier à certains manques de AWT, sun a crée SWING qui est un autre ensemble de composant gaphique. Tous les composants graphiques SWING sont préfixés par un J, d'ou le JFrame. En fait une JFrame est une frame dans swing.

    Il est préférable d'utiliser SWING à AWT, donc tous tes composants doivent commencer par un J.

    J'espère avoir ete assez clair.

  13. #13
    pug
    pug est déconnecté
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Ok donc je cré une Frame. Ca ca va je peux y arriver. Mais ensuite je dois créer un tableau 2D ui contiendra mes boules je suppose. Et une fois que ca c est fait qomment je peux afficher les boules?

  14. #14
    Membre habitué
    Inscrit en
    avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : avril 2003
    Messages : 159
    Points : 139
    Points
    139
    Par défaut
    Tiens pour t'aider un peu, essaie de regarder ce code. Il dessine une fenetre principale (class Jeu) qui contient un conteneur de boules (BouleContainer). Enfin il y a un objet Boule. La class Boule hérite de JPanel. Dans la méthode paintComponent, on définit l'aspect graphique de la boule. Ici par exemple j'ai déssiné un rectangle et un cercle dans chaque objet Boule. J'espère que le code est assez simple et qu'il pourra t'aider.

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    public class Test {
     
    	public static void main(String args[]) throws Exception {
     
    		Jeu jeu = new Jeu();
     
     
     
    	}
    }
     
    class Jeu extends JFrame 
    {
     
    	public Jeu()
    	{
    		super("Exemple de jeu");
    		this.getContentPane().add(new BouleContainer(2,2));
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.pack();
    		this.setVisible(true);
    	}
     
    }
     
    class Boule extends JPanel
    {
     
    	public Boule()
    	{
     
    	}
     
    	public Dimension getPreferredSize()
    	{
    		return new Dimension(110,110);
    	}
    	public void paintComponent(Graphics g)
    	{
    		g.setColor(Color.RED);
    		g.drawRect(0,0,100,100);
    		g.drawOval(10,10,10,10);
    	}
    }
     
    class BouleContainer extends JPanel
    {
    	private int w;
    	private int h;
     
    	public BouleContainer(int w, int h)
    	{
    		this.w = w;
    		this.h = h;
     
    		this.setLayout(new GridLayout(this.w, this.h));
    		for(int i = 0;i < w * h;i++)
    			this.add(new Boule());
    	}
     
    }

  15. #15
    pug
    pug est déconnecté
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Merci bcp pour ton code il m aidera surrement bcp, enfin il m aide deja d ailleurs.

    Je vais me pencher dessus. merci bcp pour ton aide.

  16. #16
    Membre habitué
    Inscrit en
    avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : avril 2003
    Messages : 159
    Points : 139
    Points
    139
    Par défaut
    De rien n'hesite pas a revenir vers nous pour n'importe quel probleme

  17. #17
    pug
    pug est déconnecté
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Merci c est vraiment sympa.
    Heu une tite question mais toute tite. Tu mets svt this..... . Pourquoi tjs le mettre. Car this designe bien l objet lui meme. Ca apporte rien de plus non?

  18. #18
    Membre habitué
    Inscrit en
    avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : avril 2003
    Messages : 159
    Points : 139
    Points
    139
    Par défaut
    Non c'est vrai que ca n'apporte rien de plus, sauf par exemple dans le constructeur de BouleContainer pour différencier la variable de classe w du paramètre w.

    Sinon, je t'ai envoyé un mail pour te dire qu'il manquait surement une classe : Joueur dans tes sources, donc si tu pouvais me l'envoyer.

  19. #19
    pug
    pug est déconnecté
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    pourquoi faire une classe Joueur?

  20. #20
    Membre habitué
    Inscrit en
    avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : avril 2003
    Messages : 159
    Points : 139
    Points
    139
    Par défaut
    euh désolé pour l'histoire de la classe Joueur, je me suis trompé de post. Par contre la première partie de ma réponse reste valable.

Discussions similaires

  1. [1.x] Comment creer une simple vue dans le Backend!
    Par 3logy dans le forum Symfony
    Réponses: 3
    Dernier message: 26/06/2012, 17h29
  2. Réponses: 8
    Dernier message: 04/01/2007, 11h15
  3. Réponses: 6
    Dernier message: 05/12/2006, 12h05
  4. Comment creer une application dans une dll
    Par Aiekick dans le forum MFC
    Réponses: 2
    Dernier message: 05/03/2006, 15h05

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