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] Au niveau de la barre de menu..


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 47
    Par défaut [SWING] Au niveau de la barre de menu..
    Salut!!

    Donc je voudrai savoir si il y a moyen, et lequel, pour avoir plusieurs sorte de barre de menu.

    Je m'explique, la barre de menu est différente sous mac os x par rapport a windows.
    Il n'y a qu'une propriété à rajouter pour l'affiche correcte de la barre de menu, mais les conventions des menus ne sont pas les mêmes non plus.
    Ce qu'il fait qu'il fait que par exemple, "Quitter" ne se trouve pas au même endroit (a savoir, pas dans le menu "Fichier").

    Ce que je pensai donc faire, c'etait de savoir qu'elle plateforme etait utiliser, et ainsi appliquer la barre de menus correspondante. Je sais pas si c'est possible de faire des fichier jar ou je ne sais quoi d'autre...

    Merci pour vos réponses!!

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 908
    Billets dans le blog
    54
    Par défaut
    Pour savoir sur quel OS tu es tu peux regarder la propriété "os.name".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String os = System.getProperty("os.name");
    Ensuite à partir de ce nom tu peux charger un fichiers (XML?) de définition/configuration de la barre de menu qui soit spécifique en fonction des règles de présentation de chaque OS
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 47
    Par défaut
    Ok, mais dans ce cas, comment on fait pour utiliser le fichier de configuration??
    Enfin, je n'arrive pas à voir comment faire pour utiliser des menus différents.. Faut il que je fasse une nouvelle classe pour chaque barre de menus? mais ca va etre pénible pour les listener..??

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 908
    Billets dans le blog
    54
    Par défaut
    Apparament il existe plusieurs mappings/bindings XML-Swing plus ou moins evolues. Donc en cherchant tu trouveras quelques chose qui te conviens ou +/- souple a utiliser. Voila moi comment je m'y prendrai sachant que je me suis fait mon propre binding XML-Swing apparente (mais plus complexe) a ce que je poste ici mais que pour le moment je me fiche un peu pour des conventions de chaque platforme. C'etait juste histoire d'avoir a eviter de code 36.000 fois les meme choses.

    Note : comme tu le verras j'utilise enormement les Action. Ca m'evite de dupliquer le meme code/listener entre le menu, la barre d'outils et/ou les eventuels popups et autres menus contextuels.

    Pour simplifier je ne donne que le layout Windowsien.

    Fichier actions.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ...
    <action id="NewAction" i18nText="ACTION_NEW" i18nToolTip="ACTION_NEW_TOOLTIP" i18nMnemonic="ACTION_NEW_MNEMONIC" i18nKeyStroke="ACTION_NEW_KEYSTROKE" i18nIcon="ACTION_NEW" method="doNewDocument"/>
    <action id="OpenAction" i18nText="ACTION_OPEN" i18nToolTip="ACTION_OPEN_TOOLTIP" i18nMnemonic="ACTION_OPEN_MNEMONIC" i18nKeyStroke="ACTION_OPEN_KEYSTROKE" i18nIcon="ACTION_OPEN" method="doOpenDocument"/>
    <action id="SaveAction" i18nText="ACTION_SAVE" i18nToolTip="ACTION_SAVE_TOOLTIP" i18nMnemonic="ACTION_SAVE_MNEMONIC" i18nKeyStroke="ACTION_SAVE_KEYSTROKE" i18nIcon="ACTION_SAVE" method="doSaveSelectedDocument"/>
    <action id="SaveAsAction" i18nText="ACTION_SAVE_AS" i18nToolTip="ACTION_SAVE_AS_TOOLTIP" i18nMnemonic="ACTION_SAVE_AS_MNEMONIC" i18nKeyStroke="ACTION_SAVE_AS_KEYSTROKE" i18nIcon="ACTION_SAVE_AS" method="doSaveAsSelectedDocument"/>
    <action id="SaveCopyAction" i18nText="ACTION_SAVE_COPY" i18nToolTip="ACTION_SAVE_COPY_TOOLTIP" i18nMnemonic="ACTION_SAVE_COPY_MNEMONIC" i18nKeyStroke="ACTION_SAVE_COPY_KEYSTROKE" i18nIcon="ACTION_SAVE_COPY" method="doSaveCopySelectedDocument"/>
    <action id="PrintAction" i18nText="ACTION_PRINT" i18nToolTip="ACTION_PRINT_TOOLTIP" i18nMnemonic="ACTION_PRINT_MNEMONIC" i18nKeyStroke="ACTION_PRINT_KEYSTROKE" i18nIcon="ACTION_PRINT" method="doPrintSelectedDocument"/>
    <action id="ExitAction" i18nText="ACTION_EXIT" i18nToolTip="ACTION_EXIT_TOOLTIP" i18nMnemonic="ACTION_EXIT_MNEMONIC" i18nKeyStroke="ACTION_EXIT_KEYSTROKE" i18nIcon="ACTION_EXIT" method="doExitApplication"/>
    ...
    Note : si le nom des actions change avec les systemes (ex : Quit/Exit) penser a fournir des fichiers de traduc different pour chaque OS (voir ResourceBundle et le 3ieme argument : la variante).

    Fichier menubar_windows.xml
    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
     
    <menuBar id="mainMenuBar">
      <menu id="FileMenu" i18nText="MENU_FILE" i18nMnemonic="MENU_FILE_MNEMONIC">
        <menuitem id="NewMenuItem" actionRef="NewAction"/>
        <menuitem id="OpenMenuItem" actionRef="OpenAction"/>
        <separator/>
        <menuitem id="SaveMenuItem" actionRef="SaveAction"/>
        <menuitem id="SaveAsMenuItem" actionRef="SaveAsAction"/>
        <menuitem id="SaveCopyMenuItem" actionRef="SaveCopyAction"/>
        <separator/>
        <menuitem id="PageSetupItem" actionRef="PageSetupAction"/>    
        <menuitem id="PrintItem" actionRef="PrintAction"/>    
        <separator/>
          <menu id="ExportMenu" i18nText="MENU_EXPORT" i18nMnemonic="MENU_EXPORT_MNEMONIC">
             ...
          </menu>
        <separator/>
        <menuitem id="RecentFile0">    
        <menuitem id="RecentFile1">    
        <menuitem id="RecentFile2">    
        <menuitem id="RecentFile3">    
        <separator/>
        <menuitem id="ExitMenuItem" actionRef="ExitAction"/>
      </menu>
      ...
    </menuBar>
    Fichier toolbar_windows.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <toolBar id="mainToolBar">
      <button id="NewButton" actionRef="NewAction" showText="false"/>
      <button id="OpenButton" actionRef="OpenAction" showText="false"/>
      <button id="SaveButton" actionRef="SaveAction" showText="false"/>
      <separator/>
      <button id="PrintButton" actionRef="PrinttAction" showText="false"/>
      ...
    </toolBar>
    Mais sinon des fichiers .properties pour la config ca peut aussi marcher. Meme si la classe locale sert principalement a gerer des langues, tu peux te creer des locale avec le systeme d'exploitation et charger des ResourceBundle appropries :

    Fichier menu_windows.properties :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    MenuBar=FileMenu,EditMenu,ViewMenu,HelpMenu
    FileMenu=NewItem,OpenItem,<separator>,SaveItem, SaveAsItem,SaveCopyItem,<separator>, ...
    NewItem=NewAction
    NewAction=doNewDocument
    OpenItem=OpenAction
    OpenAction=doOpenDocument
    Evidement dans tous les cas il te faut un fichier de regles par defaut pour quand tu te trouve sur un OS pour lequel tu n'as pas fait de regles speciales (idee a moi : mettre Linux/Unix/Windows en tant que regle par defaut car le layout des menus est en general similaire voir identique).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 47
    Par défaut
    Je sais j'ai mis du temps à revenir sur ce sujet, et donc je n'avais pas vu ta réponse...

    Je suis désolé et je te remercie car je trouve ton idée interressante et je vais dorénavent faire mes menus à travers un fichier de properties!!

    Encore une fois, merci et désolé de ne pas avoir répondu plus tôt !!! (presque un an quand même...)

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/09/2010, 16h07
  2. Comment faire une Barre de Menu?
    Par gamerome dans le forum OpenGL
    Réponses: 5
    Dernier message: 18/02/2005, 14h46
  3. [MFC] Supprimer la barre de menu
    Par Kevgeii dans le forum MFC
    Réponses: 8
    Dernier message: 27/11/2004, 17h09
  4. barre de menu principal
    Par norfelt dans le forum IHM
    Réponses: 10
    Dernier message: 27/10/2003, 11h37
  5. Comment créer des barres de Menu ?
    Par MoKo dans le forum IHM
    Réponses: 5
    Dernier message: 30/07/2003, 14h58

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