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

Langage Java Discussion :

JButton déclarés dans une boucle, comment modifier leur propriétés?


Sujet :

Langage Java

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Par défaut JButton déclarés dans une boucle, comment modifier leur propriétés?
    Bonjour,

    J'ai déclaré des JButton à l'aide d'une boucle et ils se placent dans mon JPanel.
    Le problème, c'est qu'ils s'adaptent en fonction de mon JPanel et que j'aimerais pouvoir modifier leur taille ainsi que leur placement.

    Quelqu'un a-t-il une idée?

    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
    import java.awt.*;
    import javax.swing.*;
     
    public class Plateau {
     
        public static void main( String[] args ) {
     
            EventQueue.invokeLater( new Runnable() {
     
                @Override
                public void run() {
                    JFrame f = new PlateauJFrame("Bataille");
     
                    f.setVisible(true);
                    f.setResizable(true); 
                    f.setSize(new Dimension(960, 200));
                    f.setLocationRelativeTo( f.getParent() );
                    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
                }
            });
        }
    }
     
    class PlateauJFrame extends JFrame {    
     
        /**
         * Cases
         */
        JButton[][] mesCases;
     
        /**
         * JPanel Principal
         */
        private JPanel pScene;            
     
     
        public PlateauJFrame( String title ) {
     
            int cpt = 1;
            mesCases = new JButton[10][10];
            pScene = new JPanel( new GridLayout(0, 10) );
            this.add( pScene );
     
            for( int i = 0; i < mesCases.length; i++ ) {
                for( int j = 0; j < mesCases[0].length; j++ ) {
                    mesCases[i][j] = new JButton( String.valueOf( cpt++ ) );
                    mesCases[i][j].setSize(10,10);
                    pScene.add( mesCases[i][j] );
                }
            }
        }
    }
    PS: Ce n'est pas moi qui ai fait ce code.

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Bonjour,

    C'est par rapport au Layout ton souci, Celui par défaut sur un JPanel est le flowLayout donc tes composants seront en ligne, tu peux faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LeJpanel.setLayout(null)
    ainsi le panel n'aura plus de layout et tu peux ainsi les placer avec des setPositionX ou Y. Par contre jouer avec les pixels c'est pas le plus simple.

    Dans ton code la personne a fait un gridLayout sur le panel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     pScene = new JPanel( new GridLayout(0, 10) );
    donc une grille avec 0 ligne ( par défaut y'en a une il me semble) et 10 colonnes, le problème de la grid c'est que les composants sont automatiquement mis à la taille de la case. Pour un rendu plus "propre" l'astuce c'est de mettre les JButton dans des JPanel puis de mettre les JPanel dans la grid.

    Souvent pour un jolie rendu en swing il faut faire une combinaison de layout (Border,Grid,Box,Card...).
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Par défaut
    Ah oui, j'avais oublié de mettre ça, merci beaucoup

    Edit: J'ai essayé de faire comme tu m'as dit, mais je n'y arrive pas, j'ai repris le code et je l'ai adapté:

    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
    import java.awt.GridLayout;
     
    import javax.swing.*;
     
    public class Plateau2 extends JFrame {
     
    	JPanel pan = new JPanel();
     
    	JButton[][] mesCases;
    	int cpt = 1;
     
     
    	public Plateau2(){
    		setTitle("Bataille Navale"); 
    		setSize(1300,720);	
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		
            setLocationRelativeTo(null);	
            setVisible(true);	
            setLayout(null);
            for( int i = 0; i < mesCases.length; i++ ) {
                for( int j = 0; j < mesCases[0].length; j++ ) {
                    mesCases[i][j] = new JButton( String.valueOf( cpt++ ) );
                    mesCases[i][j].setSize(10,10);
     
               }
     
    	}
    }
     
     
    	public static void main (String args[]){
    		Plateau2 numeroUn = new Plateau2();
    	}
     
    }
    Il y a-t-il une erreur ou est-ce que j'ai tout fait faux?

  4. #4
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Bonjour,

    est-ce que j'ai tout fait faux?
    Erreur grave même, au bûcher .

    C'est comme si tu faisais Donc tu retires le layout de la JFrame plateau2 (BorderLayout par défaut), ce que tu veux c'est retirer celui du JPanel pour y mettre tes boutons

    devrait mieux fonctionner.

    Par contre c'est peut être un test mais je ne vois plus de add donc ta frame risque d'être vide.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Par défaut
    Ah, il faut que j'aie 2 panneaux, je n'avais pas compris. Mais le problème, c'est que maintenant, quand je lance le programme, Eclipse me dit qu'il y a une erreur à la ligne 21:

    Exception in thread "main" java.lang.NullPointerException
    at Plateau2.<init>(Plateau2.java:21)
    at Plateau2.main(Plateau2.java:33)
    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
    import java.awt.GridLayout;
     
    import javax.swing.*;
     
    public class Plateau2 extends JFrame {
     
    	JPanel pan = new JPanel();
    	JPanel plateau2 = new JPanel();
     
    	JButton[][] mesCases;
    	int cpt = 1;
     
     
    	public Plateau2(){
    		setTitle("Bataille Navale"); 
    		pan.setSize(1300,720);	
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		
            setLocationRelativeTo(null);	
            pan.setVisible(true);	
            pan.setLayout(null);
            for( int i = 0; i < mesCases.length; i++ ) {
                for( int j = 0; j < mesCases[0].length; j++ ) {
                    mesCases[i][j] = new JButton( String.valueOf( cpt++ ) );
                    mesCases[i][j].setSize(10,10);
                    add(mesCases[i][j]);
               }
     
    	}
    }
     
     
    	public static void main (String args[]){
    		Plateau2 numeroUn = new Plateau2();
    	}
     
    }

  6. #6
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NullPointerException
    Un objet est mal ou non initialisé. Tu as vu que c'était à la ligne 21.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for( int i = 0; i < mesCases.length; i++ ) {
    à ton avis quel objet n'est pas initialisé dedans .

    Par contre pour mieux t'aider, que souhaites tu faire comme appli?
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Par défaut
    Citation Envoyé par XxArchangexX Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NullPointerException
    Un objet est mal ou non initialisé. Tu as vu que c'était à la ligne 21.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for( int i = 0; i < mesCases.length; i++ ) {
    à ton avis quel objet n'est pas initialisé dedans .

    Par contre pour mieux t'aider, que souhaites tu faire comme appli?
    Ce qui n'est pas initialisé c'est le "mesCases", mais pourtant je le fais plus haut, je ne comprend pas...
    Et pour te dire ce que je fais, c'est une bataille navale pour l'école, en tout cas merci pour ton aide

  8. #8
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Tu dis que "mesCases" est un tableau à 2 dimensions de JButton mais tu ne l'a pas construit.

    Un objet c'est une instance d'une classe (instancier un objet), pour être utilisé il faut le construire avec le constructeur de cette classe. Cette action c'est avec le new .

    C'est comme si tu disais "tiens j'ai envi que ce morceau de féraille soit une voiture", mais si ensuite tu ne construit pas la voiture, quand tu voudras l'utiliser comme voiture il va y avoir un problème.

    En revenant à ton cas tu dis mescases est un tableau à 2 dimensiosn de JButton, puis tu veux utiliser length, java te dit non, si tu veux utiliser length il faut construire mescases en tableau de JButton avant.

    Après pour ton interface, une grille de bouton je ne trouve pas ça très design. Si tu as le courage tu peux regarder le paintComponent(Graphics g) d'un JPanel pour jouer avec des images en fond. Après c'est un avis personnel.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Par défaut
    Je viens de me rendre compte, je ne sais pas comment j'ai pu oublier quelque chose de si gros .
    En fait, j'ai choisi de faire des boutons, parce que comme ça je peux changer le fond facilement, et je n'ai jamais vraiment fait de "dessins" dans Java et je n'ai pas trop le temps (même si ça ne doit pas être très long ). Voilà ce que ça donne:



    Et les boutons se mettent en vert une fois que le joueur a placé ses bateaux, mais si tu me dis qu'une grille de dessin est mieux... Je ne sais pas, je me demande ce qui est le plus facile à utiliser , dis-moi juste ça et merci pour ton aide


    Edit: Je suis vraiment désolé, mais je n'y comprend rien Je n'arrive pas à faire fonctionner tout cela...

    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
    import java.awt.GridLayout;
     
    import javax.swing.*;
     
    public class Plateau2 extends JFrame {
     
    	JPanel pan = new JPanel();
    	JPanel plateau2 = new JPanel();
     
    	JButton[][] mesCases = new JButton [10][10];
    	int cpt = 1;
     
     
    	public Plateau2(){
    		setTitle("Bataille Navale"); 
    		plateau2.setSize(700,720);	
    		pan.setSize(1300,720);	
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		
            setLocationRelativeTo(null);	
     
            setVisible(true);
            setLayout(null);
            for( int i = 0; i < mesCases.length; i++ ) {
                for( int j = 0; j < mesCases[0].length; j++ ) {
                    mesCases[i][j] = new JButton( String.valueOf( cpt++ ) );
                    mesCases[i][j].setSize(10,10);
                    mesCases[i][j].setLocation(500,500);
                    add(mesCases[i][j]);
               }
     
    	}
            pan.add(plateau2);
    }
     
     
    	public static void main (String args[]){
    		Plateau2 numeroUn = new Plateau2();
    	}
     
    }
    La chose que j'ai du mal à assimiler, c'est d'ajouter un JPanel au JPanel, je suis débutant en Java, donc désolé pour toutes ces questions

  10. #10
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Bonjour,

    Si tu n'as pas beaucoup de temps ne te prend pas la tête c'est juste pour le design, l'esprit artistique ^_^. Le plus facile reste les boutons.

    Pas de souci on a tous commencé un jour. Alors, les soucis dans ton code :

    1/ Tu nommes ta classe Plateau2 et un JPanel plateau2 c'est pas le meilleur choix pour la compréhension.

    2/ Quand tu fais cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    setVisible(true);
            setLayout(null);
    il faut bien voir que c'est sur la classe donc ta JFrame que tu fais ces actions.
    Met un this.setLayout pour bien visualiser sur quoi tu travailles.

    3/ le JPanel plateau2 ne sert pas à grand chose, à mon avis tu travailles au feelling :p. Quand tu fais du graphique je te conseil une feuille et un crayon . Pour Dessiner l'interface que tu aimerais après il faut juste connaitre les layouts et les composants pour s'amuser.

    4/ Avec tout sa tu peux retrouver la plupart de tes soucis

    Tu mélanges des caractéristiques pour les trois conteneurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    setTitle("Bataille Navale"); 
    plateau2.setSize(700,720);	
    pan.setSize(1300,720);	
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		
    setLocationRelativeTo(null);
    Tu ajoutes tous tes boutons dans la JFrame
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.add(mesCases[i][j]);
    Tu ajoutes plateau2 dans le pan mais tu n'ajoutes jamais le pan dans la JFrame
    Donc analyse, un peu de conception sa ne fais pas de mal :p. Je suppose que plateau2 c'est la prochaine étape où les joueurs vont cliquer sur tes boutons pour trouver les bateaux, c'est donc une grille de bouton, (JButton) et la grille en gridLayout? bouton placé à la main? puis est ce qu'il y a besoin de bouton sur la fenêtre (quitter, pause, tricher :p) ? est ce que tu les places dans une barre menu ou sous la grille de bouton? Si je place ma grille dans un panel est ce que sa sert? ou est ce que je place directement sur la JFrame? La selection du choix des joueurs est-elle ergonomique? si j'étais joueur comment est ce que j'aimerai voir mon interface?

    ça en fait des questions .
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Par défaut
    Citation Envoyé par XxArchangexX Voir le message
    Bonjour,

    Si tu n'as pas beaucoup de temps ne te prend pas la tête c'est juste pour le design, l'esprit artistique ^_^. Le plus facile reste les boutons.

    Pas de souci on a tous commencé un jour. Alors, les soucis dans ton code :

    1/ Tu nommes ta classe Plateau2 et un JPanel plateau2 c'est pas le meilleur choix pour la compréhension.

    2/ Quand tu fais cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    setVisible(true);
            setLayout(null);
    il faut bien voir que c'est sur la classe donc ta JFrame que tu fais ces actions.
    Met un this.setLayout pour bien visualiser sur quoi tu travailles.

    3/ le JPanel plateau2 ne sert pas à grand chose, à mon avis tu travailles au feelling :p. Quand tu fais du graphique je te conseil une feuille et un crayon . Pour Dessiner l'interface que tu aimerais après il faut juste connaitre les layouts et les composants pour s'amuser.

    4/ Avec tout sa tu peux retrouver la plupart de tes soucis

    Tu mélanges des caractéristiques pour les trois conteneurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    setTitle("Bataille Navale"); 
    plateau2.setSize(700,720);	
    pan.setSize(1300,720);	
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		
    setLocationRelativeTo(null);
    Tu ajoutes tous tes boutons dans la JFrame
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.add(mesCases[i][j]);
    Tu ajoutes plateau2 dans le pan mais tu n'ajoutes jamais le pan dans la JFrame
    Donc analyse, un peu de conception sa ne fais pas de mal :p. Je suppose que plateau2 c'est la prochaine étape où les joueurs vont cliquer sur tes boutons pour trouver les bateaux, c'est donc une grille de bouton, (JButton) et la grille en gridLayout? bouton placé à la main? puis est ce qu'il y a besoin de bouton sur la fenêtre (quitter, pause, tricher :p) ? est ce que tu les places dans une barre menu ou sous la grille de bouton? Si je place ma grille dans un panel est ce que sa sert? ou est ce que je place directement sur la JFrame? La selection du choix des joueurs est-elle ergonomique? si j'étais joueur comment est ce que j'aimerai voir mon interface?

    ça en fait des questions .
    1. C'est vrai que ce n'est pas la meilleure chose, je l'ai renommé

    2. Je dois donc ajouter un this., mais seulement au setLayout?

    3. Je ne comprend pas bien, je le supprime et j'ajoute les JButton dans mon JPanel pan?

    4. Voilà ce à quoi ressemble la prochaine fenêtre (qui est dans une autre classe):



    Mon gros problème, c'est que je déclarais les JButton comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class fenetreJeuJoueur1 extends JFrame {
     
    	// Création des JButton pour la grille (boutons ligne a)
    	JButton a1,a2,a3,a4,a5,a6,a7,a8,a9,a10;
    Et ensuite je les initialisais comme ça:

    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
    public fenetreJeuJoueur1(){
     
            // Informations JButton ligne a
            a1 = new JButton();
            a1.setLocation(420,400);
            a1.setSize(20,20);
            a1.setBackground(Color.BLUE);
            a2 = new JButton();
            a2.setLocation(440,400);
            a2.setSize(20,20);
            a2.setBackground(Color.BLUE);
            a3 = new JButton();
            a3.setLocation(460,400);
            a3.setSize(20,20);
            a3.setBackground(Color.BLUE);
            a4 = new JButton();
            a4.setLocation(480,400);
            a4.setSize(20,20);
            a4.setBackground(Color.BLUE);
            a5 = new JButton();
            a5.setLocation(500,400);
            a5.setSize(20,20);
            a5.setBackground(Color.BLUE);
            a6 = new JButton();
            a6.setLocation(520,400);
            a6.setSize(20,20);
            a6.setBackground(Color.BLUE);
            a7 = new JButton();
            a7.setLocation(540,400);
            a7.setSize(20,20);
            a7.setBackground(Color.BLUE);
            a8 = new JButton();
            a8.setLocation(560,400);
            a8.setSize(20,20);
            a8.setBackground(Color.BLUE);
            a9 = new JButton();
            a9.setLocation(580,400);
            a9.setSize(20,20);
            a9.setBackground(Color.BLUE);
            a10 = new JButton();
            a10.setLocation(600,400);
            a10.setSize(20,20);
            a10.setBackground(Color.BLUE);
    Donc ça me faisait tout ça pour les 100 boutons, plus ça pour les 200 boutons de la fenêtre de jeu qui apparaissait après...

  12. #12
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    2. Je dois donc ajouter un this., mais seulement au setLayout?
    ce n'est pas obligatoire mais pour une meilleure lisibilité un this.fonction permet de bien voir que c'est sur la JFrame que tu veux effectuer l'action. Donc rajoute le sur toutes les fonctions que tu veux appliquer à ta JFrame.

    3. Je ne comprend pas bien, je le supprime et j'ajoute les JButton dans mon JPanel pan??
    Du code que j'ai vu oui, tu as ta JFrame puis un panel plateau2 ou tu places tes boutons donc à quoi sert pan? ou à l'inverse pourquoi ne pas tout mettre dans pan et retirer plateau2

    Effectivement la boucle pour mettre en place la grille est une bonne solution que de faire les 200 boutons à la main ^_^.

    Par contre une remarque : le joueur marque dans la case l'endroit ou il veut tirer puis il clique sur le bouton pour tirer, la grille de bouton à quoi sert elle?

    Une autre petite question, tu as fais le modèle du jeu avant de faire le graphique?
    j'entend par modèle quand un joueur clique sur un bouton il y a quelque chose derrière?
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  13. #13
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Par défaut
    Citation Envoyé par XxArchangexX Voir le message
    Du code que j'ai vu oui, tu as ta JFrame puis un panel plateau2 ou tu places
    Par contre une remarque : le joueur marque dans la case l'endroit ou il veut tirer puis il clique sur le bouton pour tirer, la grille de bouton à quoi sert elle?
    La grille de bouton, elle sert à voir où tu as déjà tiré et si tu as tiré sur un bateau (la case devient rouge) ou dans l'eau (la case devient blanche). L'autre grille (celle du dessus) set à voir ta grille et voir où ton adversaire a tiré, sur quel bateau etc...

    Citation Envoyé par XxArchangexX Voir le message
    Une autre petite question, tu as fais le modèle du jeu avant de faire le graphique?
    j'entend par modèle quand un joueur clique sur un bouton il y a quelque chose derrière?
    Je ne comprend pas bien ta question

  14. #14
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    dans ce cas tu n'as pas besoin de bouton pour ta grille, des Jlabel suffiront pour l'affichage des couleurs bleu rouge blanche .

    mais tu pourrais imaginer une grille (de bouton) plus grande et le joueur clique sur la case sur laquelle il veut tirer (plus fun) non?

    Pour ma question c'est sur le moteur de ton jeu, comment sais tu qu'une case est bleu au début et qu'elle devient rouge par exemple? sur quoi tu travailles les traitements des actions des joueurs?
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  15. #15
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Par défaut
    Citation Envoyé par XxArchangexX Voir le message
    dans ce cas tu n'as pas besoin de bouton pour ta grille, des Jlabel suffiront pour l'affichage des couleurs bleu rouge blanche .

    mais tu pourrais imaginer une grille (de bouton) plus grande et le joueur clique sur la case sur laquelle il veut tirer (plus fun) non?

    Pour ma question c'est sur le moteur de ton jeu, comment sais tu qu'une case est bleu au début et qu'elle devient rouge par exemple? sur quoi tu travailles les traitements des actions des joueurs?
    Je ne comprend pas, je mets des JLabel qui changent de couleur?

    Sinon j'y ai pensé pour les cases qui changent de couleur, mais j'avais abandonné cela et je ne sais pas si je vais changer, mais à voir

    La case je sais qu'elle est bleue car je l'initialise bleue au début:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a1.setBackground(Color.BLUE);
    Je travaille avec des ActionListener, lorsque le joueur clique sur "tirer", la case en question se met en couleur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (entree.getText().compareTo("A1")==0){
    a1.setBackground(Color.GREEN);
    }
    Mais je vais peut-être changer et faire comme tu me dis, un panneau pour cliquer sur les boutons

  16. #16
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Si tu gardes le premier choix, oui tu peux changer la couleur de fond d'un JLabel ce sera plus simple qu'un JButton.

    Si tu optes pour la grille avec les boutons les traitements sont dans les ActionListener des boutons donc si tu maitrises cette notion ça ne sera pas difficile.

    avec tout sa tu as de quoi t'amuser, si tu as des questions n'hésite pas sinon bon courage. N'oublie pas le résolu :p.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  17. #17
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Par défaut
    Super, merci pour tes réponses, je vais essayer avec des JLabel et voir ce que ça donne, encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tween déclaré dans une fonction, comment l'arrêter depuis une autre fonction?
    Par leMich dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 04/09/2009, 08h12
  2. Réponses: 1
    Dernier message: 22/04/2007, 17h51
  3. Comment sauter une itération dans une boucle ?
    Par Kaeguri dans le forum Fortran
    Réponses: 3
    Dernier message: 20/04/2007, 13h30
  4. Réponses: 3
    Dernier message: 12/06/2006, 13h04
  5. Réponses: 6
    Dernier message: 17/06/2005, 17h51

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