Comment rendre mon application java compatible avec le menu global de l’unité?

J’aime développer en Java mais je veux aussi la compatibilité avec le menu global? Y a-t-il un moyen? S’il vous plaît aider.

    Il existe une bibliothèque appelée java-gnome (un wrapper java gtk) qui permet à vos applications de se comporter comme toutes les applications natives. Il leur fournit toute la gloire: widgets natifs, menu global, etc.

    La bibliothèque est disponible sur les repositorys ubuntu:

    • Bibliothèque: libjava-gnome-java Installez libjava-gnome-java
    • Exemples: libjava-gnome-java-doc Installez libjava-gnome-java

    Le but de la bibliothèque est de développer une riche expérience Java + Gnome. Attention, si vous utilisez cette bibliothèque, votre application perdra la fonctionnalité multiplateforme de Java (car elle sera liée à java-gnome).

    Voici un exemple d’application (fourni avec java-gnome) affichant l’intégration du menu:

    Exemple d'application

    Essayez Ayatana. Vous pouvez trouver des instructions ici: http://hanynowsky.wordpress.com/2012/05/12/integration-of-java-swing-applications-with-unity-global-menu-in-ubuntu-12-04/

    Tout ce que vous avez à faire est d’importer la bibliothèque Java Ayatana et de l’appeler dans votre classe JFrame principale. Cela implique en fait l’ajout des quelques lignes suivantes dans votre code (ainsi que l’importation de classes Ayatana):

    if (AyatanaDesktop.isSupported()) ApplicationMenu.tryInstall(mainFrame); 

    Voici un exemple:

     import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import org.java.ayatana.ApplicationMenu; import org.java.ayatana.AyatanaDesktop; public class MyAppWithUnityMenu { public MyAppWithUnityMenu () { JFrame mainFrame = new JFrame("This app integrates in Unity menu bar"); // set up mainFrame, by adding components, etc. JPanel panel = new JPanel(); panel.add(new JLabel("This is a sample application for testing menu integration in Unity. Enjoy!")); mainFrame.getContentPane().add(panel); mainFrame.addWindowListener ( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); // set up the menu bar, by adding menus, etc. JMenuBar menuBar = new JMenuBar(); JMenu file = new JMenu("File"); file.add(new JMenuItem("Open")); file.add(new JMenuItem("Save")); file.add(new JMenuItem("Close")); JMenu edit = new JMenu("Edit"); edit.add(new JMenuItem("Copy")); edit.add(new JMenuItem("Cut")); edit.add(new JMenuItem("Paste")); JMenu help = new JMenu("Help"); help.add(new JMenuItem("Help topics")); help.add(new JMenuItem("About")); menuBar.add(file); menuBar.add(edit); menuBar.add(help); menuBar.setVisible(true); mainFrame.setJMenuBar(menuBar); mainFrame.pack(); mainFrame.setVisible(true); // Java Ayatana Call if (AyatanaDesktop.isSupported()) { ApplicationMenu.tryInstall(mainFrame); } } public static void main(Ssortingng[] args) { new MyAppWithUnityMenu(); } } 

    Et le plus important, c’est que votre application est toujours multiplate-forme. J’ai testé l’exemple ci-dessus sous Ubuntu 12.04 LTS et Windows XP.

    Vous pouvez utiliser un ppa: ppa: danjaredg / jayatana

    http://www.webupd8.org/2014/02/get-unity-global-menu-hud-support-for.html

    Cela se fait normalement au niveau de la boîte à outils, par exemple dans GTK ou Qt. Donc, la manière de le faire serait de patcher Swing, si c’est le toolkit GUI que vous utilisez. Cependant, tous les composants Unity communiquent à l’aide de DBus. Par conséquent, si vous le souhaitez vraiment, vous pouvez le faire vous-même en implémentant l’API DBus vous-même. Si vous voulez faire cela, vous pouvez jeter un oeil à libdbusmenu et voir comment ça marche.

    Pas de solution pour vous, mais pour votre information: j’ai classé le bogue Ubuntu n ° 984916 pour vérifier le fait que les menus Swing ne sont pas (semi-) automatiquement intégrés au menu global.