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 :

[SWING] Ajouter un menu bouton à JavaHelp


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Avatar de Heavy Metal Hero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2007
    Messages : 152
    Points : 333
    Points
    333
    Billets dans le blog
    13
    Par défaut [SWING] Ajouter un menu bouton à JavaHelp
    Bonjour.

    Le javahelp de mon programme est fait avec helpbroker. La fenêtre résultante est donc standard, avec une barre d'outils et un arbre de navigation tout fait sur la gauche.
    Je voudrais personnaliser le helpbroker pour ajouter une barre de bouton sous la fenêtre, comme sur l'image jointe.

    Nom : help_with_buttonbar.png
Affichages : 283
Taille : 13,3 Ko

    Quel est le moyen le plus simple de procéder ?

    Merci de votre aide.

  2. #2
    Membre expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut
    Bonjour,
    Je ne connais pas helpbroker, mais d'après la documentation d'Oracle, il suffit d'utiliser le tag <toolbar> dans le fichier votre_fichier_aide.hs pour décrire une barre d'outils personnalisée qui sera ajoutée dans la fenêtre d'aide, et je suppose qu'il faut aussi fournir les classes correspondantes à cette barre d'outils personnelle en les rendant accessible dans le classpath de l'application.
    Consultez cette documentation, elle devrait vous permettre d'atteindre votre objectif.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  3. #3
    Membre averti
    Avatar de Heavy Metal Hero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2007
    Messages : 152
    Points : 333
    Points
    333
    Billets dans le blog
    13
    Par défaut
    Merci de ta réponse !

    Le helpbroker, c'est l'agent qui englobe le helpset (définit par le .hs) dans le code. Il permet d'afficher le helpset dans une fenêtre et de lier l'ouverture de l'aide à des boutons de l'IHM ou des raccourcis clavier. Tout est géré par javahelp et on n'a quasiment pas de code java à écrire.

    Je ne cherche pas à personnaliser la toolbar mais à créer une button bar (qui contient le bouton close sur mon screenshot). Et je n'ai pas encore trouvé d'autre moyen que d'inclure mon helpset dans une JDialog et lier l'action des boutons à la main. Je ne suis pas sur d'être obligé de me passer du helpbroker et de devoir tout refaire à la main, donc je me demandais s'il y avait un moyen plus simple, comme personnaliser le help broker ou autre. Je n'ai rien trouvé dans la documentation

  4. #4
    Membre expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut
    Bonjour Heavy Metal Hero,

    Je n'avais pas tout lu, effectivement le tag <toolbar> n'est conçu que pour la personnalisation de la barre d'outils.
    En même temps, étant la seule solution envisageable, je crains qu'il n'y en ai pas. En effet, à part lui, rien n'est prévu dans le fichier .hs pour ajouter des composants Swing au HelpSet Viewer qu'il produit dynamiquement. De plus, il faudrait aussi pouvoir lui fournir la classe écouteur des évènements des éléments ajoutés.
    Bref, à part faire comme tu as fait, ou ré-écrire HelpBroker pour ajouter un tag permettant une telle insertion, je vois pas comment....
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  5. #5
    Membre averti
    Avatar de Heavy Metal Hero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2007
    Messages : 152
    Points : 333
    Points
    333
    Billets dans le blog
    13
    Par défaut
    Effectivement il faut inclure l'aide dans une JFrame, JDialog ou autre.
    Voici un moyen simple de l'inclure dans une frame:
    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 vmHelp {
        public static void main(String args[]) {
            JHelp helpViewer = null;
            String title = "";
            try {
                // Get the classloader of this class.                                                                                                                                                             
                ClassLoader cl = vmHelp.class.getClassLoader();
                // Use the findHelpSet method of HelpSet to create a URL referencing the helpset file.                                                                                                            
                // Note that in this example the location of the helpset is implied as being in the same                                                                                                          
                // directory as the program by specifying "jhelpset.hs" without any directory prefix,                                                                                                             
                // this should be adjusted to suit the implementation.                                                                                                                                            
                String lHelpSetFile = "APP.hs";
                URL url = HelpSet.findHelpSet(cl, lHelpSetFile);
                if (url == null) {
                    System.err.println("URL is null, maybe the help set file is wrong: " + lHelpSetFile + ". Look at vmHelp.java");
                    return;
                }
                // Create a new JHelp object with a new HelpSet.                                                                                                                                                  
                HelpSet h = new HelpSet(cl, url);
                title = h.getTitle();
                helpViewer = new JHelp(h);
                // Set the initial entry point in the table of contents.                                                                                                                                          
                helpViewer.setCurrentID("top");
            } catch (Exception e) {
                System.err.println(e.getMessage());
            }
     
            // Create a new frame.                                                                                                                                                                                
            JFrame frame = new JFrame();
            // Set it's size.                                                                                                                                                                                     
            frame.setSize(1000, 800);
            // Add the created helpViewer to it.                                                                                                                                                                  
            frame.getContentPane().add(helpViewer);
            // Set a default close operation.                                                                                                                                                                     
            frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            frame.setTitle(title);
     
            // Make the frame visible.                                                                                                                                                                            
            frame.setVisible(true);
        }
    }
    Après il suffit de rajouter à la frame un panel avec un bouton close et le tour est joué.

    Pour enregistrer les différents boutons de l'application à l'aide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pButton.addActionListener(helpAction(pHelpId));
    avec helpAction qui affiche notre JFrame.

    Pensez également à gérer les raccourcis claviers pour agir comme le helpbroker:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    pComponent.registerKeyboardAction(helpAction(pHelpId), KeyStroke.getKeyStroke(KeyEvent.VK_HELP, 0),
                    JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
            pComponent.registerKeyboardAction(helpAction(pHelpId), KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0),
                    JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
    (pComponent et la fenêtre ouvert au moment où l'on clique sur F1)

    helpViewer.setCurrentID("top"); permet d'ouvrir l'aide à une section bien précise. "top"correspond au target dans Map.jhm

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

Discussions similaires

  1. ajouter un menu a une fenetre mfc
    Par Djawida dans le forum MFC
    Réponses: 1
    Dernier message: 28/05/2009, 09h53
  2. Ajouter un menu dans une application MFC AppWizard
    Par EmbeddedMan dans le forum MFC
    Réponses: 3
    Dernier message: 08/02/2007, 16h19
  3. Réponses: 11
    Dernier message: 28/01/2006, 20h52
  4. Ajout de bouton à une zone graphique
    Par Pépé Lélé dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 19/12/2005, 21h51
  5. Ajouter un menu à une dialog form
    Par firejocker dans le forum MFC
    Réponses: 2
    Dernier message: 22/11/2005, 18h36

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