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 :

Insérer une interface graphique dans le programme


Sujet :

Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Insérer une interface graphique dans le programme
    Bonjour à tous,

    Je débute dans la programmation java. Pour le moment je fais de la programmation objet sur Netbeans, sans interface graphique.
    J'ai appris en parallèle à créer des fenêtres et des boutons avec Swing.
    Voici ma question: je souhaite dans le cadre de mon projet (un jeu non graphique), insérer une ou deux fenêtres d'alerte ou d'informations, à certaines étapes du jeu.
    J'ai construis mon objet JFrame, en la testant elle fonctionne. Mais maintenant comment la faire interagir avec le programme??

    C'est une simple fenêtre qui informe que le jeu va débuter, le joueur doit cliquer sur un bouton "Commencer".

    voici mon code:

    Le code de la fenêtre(pas terminé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
    public class windowBeginGame extends JFrame{
     
        public windowBeginGame(){
            super();
            build();
        }
     
        public void build(){
            setSize(300, 200);
            setTitle("Et c'est parti!");
            setLocationRelativeTo(null);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setResizable(false);
        }
     
         public JPanel content(){
            JPanel panel=new JPanel();
            setLayout(new FlowLayout());
            JLabel label=new JLabel("La partie de Sushibar commence."
                    + "Cliquez sur Commencer!");
            panel.add(label);
     
            JButton button=new JButton(new ActionBegin("Commencer!"));
            panel.add(button);
            return panel;
        }    
        /*
        public static void main(String[] args) {
            windowBeginGame display=new windowBeginGame();
            display.setVisible(true);
        }
    */
    }
    Le code de mon Action


    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
    package g42015.sushibar.view;
     
    import g42015.sushibar.model.Game;
    import java.awt.event.ActionEvent;
    import javax.swing.AbstractAction;
     
    /**
     *
     * @author Administrator
     */
    public class ActionBegin extends AbstractAction {
     
        private Game game;
     
        public ActionBegin(String text){
            super(text);
        }
     
        @Override
        public void actionPerformed(ActionEvent e) {
            Display.displayBegin(game);
     
        }
     
    }

    Le code de ma classe Main:

    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
    package g42015.sushibar.control;
     
    import g42015.sushibar.model.Game;
    import static g42015.sushibar.view.Display.*;
    import java.util.Scanner;
    import javax.swing.*;
     
    /**
     * This class creats the game dynamics.
     *
     */
    public class Sushibar{
     
        public static void main(String[] args) {
     
            //on demande le nombre de joueur et on crée la partie
            Scanner clavier = new Scanner(System.in);
            System.out.println("BIENVENUE AU SUSHIBAR");
            System.out.println("======================");
            System.out.println("");
            System.out.println("Initialisation du Jeu.");
            System.out.println("----------------------");
            System.out.print("Entrez le nombre de joueur:");
            int nbPlayers = clavier.nextInt();
            Game game = new Game(nbPlayers);
            displayBegin(game);
     
            ;
     
            System.out.println("");
            System.out.println("La partie commence!");
            System.out.println("--------------------");
            System.out.println("");
            //Tant que la partie n'est pas terminée faire:
            while (!game.isOver()) {
                //on lance les dés
     
                System.out.println("Lançons les dés:");
                System.out.println("-----------------");
                game.getDiceBucket().roll();
                displayDiceBucket(game);
                boolean again = true;
                //tant que il reste au moins un lancer au joueur et qu’il veut en profiter faire      
                while (game.getRemainingRolls() > 0 && again) {
                    displayDiceAside(game);
                    displayAgainAside();
                    if (displayAgainAside() == false) {
                        again = false;
                    }
     
                }
                displayAskAction(game);
                System.out.println("");
                System.out.println("Le joueur suivant peut jouer");
                System.out.println("-----------------------------");
                displayNextPlayer(game);
            }
            displayScore(game);
     
            // }
        }
    }
    Merci !

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Voilà j'ai presque réussi, mais maintenant quand je pousse sur le bouton qui ferme ma fenêtre d'alerte, c'est tout mon programme qui se ferme. Je ne parviens pas à dissocier la fermeture de ma fenêtre et celle du programme.


    code du 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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    package g42015.sushibar.view;
     
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
     
    /**
     *
     * @author Administrator
     */
    public class windowBeginGame extends JFrame implements ActionListener{
     
        public windowBeginGame(){
            super();
            build();
        }
     
        public void build(){
            setSize(300, 200);
            setTitle("Et c'est parti!");
            setAlwaysOnTop(rootPaneCheckingEnabled);
            setLocationRelativeTo(null);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setResizable(false);
            setContentPane(content());
        }
     
        public JPanel content(){
            JPanel panel=new JPanel();
            setLayout(new FlowLayout());
            JLabel label=new JLabel("La partie de Sushibar peut commencer");
     
            panel.add(label);
            JTextField text=new JTextField("Le premier joueur, le N°0,va commencer ");
     
     
            panel.add(text);
            JButton button=new JButton(("GO!"));
            button.addActionListener(this);
            //panel.add(button);
            return panel;
        }
     
     
     
     
        @Override
        public void actionPerformed(ActionEvent e) {
     
        }
     
    }
    J'appelle ma fenêtre dans mon Main par ces deux lignes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    windowBeginGame begin=new windowBeginGame();
            begin.setVisible(true);

    J'ai fais quelques tests avec ActionListener, car je voulais que ma fenêtre reste ouverte un certain temps puis, ce referme toute seule(avec System.exit(0)), mais là également, cela ferme tout mon programme. J'ai fais cela avec le code ci-dessous dans une classe à part que j'appelais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     try {
                Thread.sleep(5000);
            } catch (InterruptedException a) {
     
            }
            System.exit(0);
    Quelqu'un peut m'indiquer comment modifier mon code pour que la fermeture de ma fenêtre n'interfère pas avec mon programme?
    Un grand merci

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Cette ligne dit qu'il faut fermer le programme quand on ferme la fenêtre, ce que java fait sagement.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Ouai! Tout bête, j'ai pas m'air malin
    Merci

    Si je souhaite pouvoir fermer ma fenêtre avec System.exit(0) (ou autre chose), sans fermer mon programme, comment dois-je organiser mon code?

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    laFenetreEnQuestion.close()
    System.exit sert à quitter le programme.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Merci Tchize, mais je fais ça où?
    Est ce que je dois laisser le try/catch avec le Thread.sleep?
    Est-ce que je dois mettre maFenêtre?close(), à la place du System.exit(0)?

    Je te remercie d'avance

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    tu le met là où tu veux la cacher. C'est une opération immédiate.

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/06/2013, 11h28
  2. [Débutant] Insérer une image dans une interface graphique
    Par Mademoiselle_Carly dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 19/02/2011, 16h35
  3. Intégrer des programmes dans une interface graphique avec GUIDE
    Par maserati222e dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 24/05/2007, 11h30
  4. appel d'un binaire systeme dans une interface graphique
    Par elbronziero dans le forum Tkinter
    Réponses: 4
    Dernier message: 18/04/2007, 10h01
  5. Intégrer une interface graphique (JPEG) à mon programme Java
    Par muad'dib dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 10/11/2006, 17h18

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