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 :

Créer des boutons avec modalResult


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Process Expert - Document Management
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Process Expert - Document Management
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Par défaut Créer des boutons avec modalResult
    Bonjour à tous,

    Peut-être déja abordé, mais non retrouvé dans le forum... mon 2° post donc milles excuses pour l'usage de la recherche

    Je débute en Java pour mon projet de fin d'année. Il s'agit d'une application graphique type "distributeur de billets".

    Par mon background Delphi et C# j'ai l'habitude d'utiliser des fenêtres modales avec un résultat modal.

    J'ai bien trouvé comment dériver un JDialog pour retourner un résultat.

    JModalDialog, en gros :
    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
     
    public class JModalDialog extends javax.swing.JDialog {
        private int modalResult = ModalResult.mrNone;
    ...
        private int getModalResult() {
            return modalResult;
        }
     
        protected void setModalResult(int i) {
            this.modalResult = i;
            this.setVisible(false);
        }
    ...
        public int showModal()
        {
            this.setSize(new Dimension(648, 510));
            this.setLocationRelativeTo(null);
            this.setVisible(true);
            return this.getModalResult();
        }
    Constantes "modales" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        public static final int mrNone     = 0;
        public static final int mrOk       = 2^0;
        public static final int mrCancel   = 2^1;
        public static final int mrAbort    = 2^2;
        public static final int mrRetry    = 2^3;
        public static final int mrIgnore   = 2^4;
        public static final int mrYes      = 2^5;
        public static final int mrNo       = 2^6;
        public static final int mrAll      = 2^7;
        public static final int mrNoToAll  = 2^8;
        public static final int mrYesToAll = 2^9;
    Et j'utilise le tout ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        dlgTest dlg = new dlgTest();
        if (dlg.showModal()==Tools.mrOk)
            myLogger.write("Réussi !");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            this.setModalResult(ModalResult.mrOk);
        }
    Jusque là tout va bien... maintenant mon problème est que, dans l'optique de "copier" le principe de boutons/fenêtres avec valeur modale...

    1) Créer des boutons type JModalButton qui appelent automatiquement le setModalResult de leur JDialog mère

    2) Idéalement proposer une propriété modalResult pour le bouton (cette valeur étant la valeur passée au JDialog)

    3) Ajouter enfin ce composant à la palette de NetBeans, et donc accéder à la propriété modalResult dans l'éditeur de GUI

    4) le point bonus, comment rendre une constante globale? CAD sans utiliser ModalResult.mrOK mais juste mrOK, j'ai cru comprendre qu'il fallait faire un implements d'une classe abstraite ou ce genre ?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    Tu es en train de recoder JOptionPane j'ai l'impression !
    Pour ta dernière question, définis les constantes dans une interface et fais implémenter cette interfaces par les classes qui utilisent les constantes. Tu peux aussi utiliser les imports statiques à partir de Java 5.

  3. #3
    Membre du Club
    Homme Profil pro
    Process Expert - Document Management
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Process Expert - Document Management
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Par défaut
    J'ai en effet bien vu JOptionPane, mais cela apporte-t-il assez de flexibilité niveau GUI? Chaque écran de mon projet dérive de JModalDialog.

    Voir ci joints des exemples d'écrans de l'appli, serait-il possible d'adapter sans trop de difficulté?

    En fait je préfère gèrer tout ce qui est GUI via le GUI builder de netbeans, et donc sans créer tout au vol. De plus on peut imaginer que d'autres éléments de l'écran déclenchent les "modal Result"


    En ce qui concerne les constantes je vais y regarder
    Images attachées Images attachées   

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    Le mieux dans ce genre de cas est de faire un JPanel (par exemple avec l'éditeur de Netbeans). Ensuite tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    JPanel panel = new MonPanel();
    int option = JOptionPane.showConfirmDialog(
                        this, // le composant parent
                        panel, 
                        "Titre", 
                        JOptionPane.OK_CANCEL_OPTION);
    if (option == JOptionPane.OK_OPTION) {
       ...
    }

  5. #5
    Membre du Club
    Homme Profil pro
    Process Expert - Document Management
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Process Expert - Document Management
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Par défaut
    Ok je vois la solution
    Mais vu le nombre d'écrans je vais garder ca pour un prochain projet

    Mais sinon quelle serait la méthode pour lancer le setModalResult du JModalDialog parent à partir d'une propriété d'un hypothétique "JModalButton"?
    Et ajouter ce composant à la palette NetBeans?

    En tout cas merci pour l'histoire du JOptionPane

  6. #6
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Citation Envoyé par Amayii
    Mais sinon quelle serait la méthode pour lancer le setModalResult du JModalDialog parent à partir d'une propriété d'un hypothétique "JModalButton"?
    Si l'instance du JModalButton dispose d'une référence sur le JModalDialog, c'est immédiat. Sinon, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    JModalDialog myModalDialog = (JModalDialog) SwingUtilities.getAncestorOfClass(JModalDialog.class, myModalButton);
    if (myModalDialog != null) {
      myModalButton.setModalResult(...);
    }

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

Discussions similaires

  1. [Article] Créer des boutons avec un effet de brillance
    Par FirePrawn dans le forum Publications (X)HTML et CSS
    Réponses: 1
    Dernier message: 04/08/2013, 12h08
  2. [Article] Créer des boutons avec icônes sans utiliser d'images
    Par FirePrawn dans le forum Publications (X)HTML et CSS
    Réponses: 9
    Dernier message: 07/09/2012, 16h37
  3. [CSS 3] Créer des boutons avec icônes sans utiliser d'images
    Par FirePrawn dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 07/09/2012, 16h37
  4. [CSS 3] Créer des boutons avec un effet de brillance
    Par FirePrawn dans le forum Mise en page CSS
    Réponses: 0
    Dernier message: 02/08/2012, 09h37
  5. Réponses: 0
    Dernier message: 04/12/2008, 15h10

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