Maison > Java > javaDidacticiel > le corps du texte

Pourquoi ma JMenuBar laisse-t-elle un espace vide dans la barre de menus de l'écran Mac OS X ?

Susan Sarandon
Libérer: 2024-10-29 08:20:02
original
252 Les gens l'ont consulté

Why does my JMenuBar leave a blank space on the Mac OS X screen menu bar?

Problème avec le changement de JMenuBar sur Mac OS X

Lorsque vous essayez de déplacer une JMenuBar vers la barre de menus de l'écran dans un environnement Mac OS X, un espace vide est souvent laissé là où le menu résiderait dans la fenêtre. Ce problème peut être résolu en établissant la propriété "apple.laf.useScreenMenuBar" au moment approprié.

Solution

Pour résoudre ce problème, définissez la propriété "apple .laf.useScreenMenuBar" au lancement du programme en utilisant l'une des méthodes suivantes :

  1. Commande de lancement : Incluez le paramètre de propriété dans la commande de lancement :
java -Dapple.laf.useScreenMenuBar=true -jar MyApplication.jar
Copier après la connexion
  1. Modification Info.plist : Ajoutez la propriété au fichier Info.plist du bundle d'application :
<key>Properties</key>
<dict>
    <key>apple.laf.useScreenMenuBar</key>
    <string>true</string>
    ...
</dict>
Copier après la connexion

Considérations supplémentaires

Il est important de noter que la définition de la propriété après le lancement de l'application peut ne pas être efficace. Le code suivant démontre une implémentation correcte sans espace vide :

import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;

/** @see http://stackoverflow.com/questions/8955638 */
public class NewMain {

    public static void main(String[] args) {
        System.setProperty("apple.laf.useScreenMenuBar", "true");
        System.setProperty(
            "com.apple.mrj.application.apple.menu.about.name", "Name");
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {

                JFrame frame = new JFrame("Gabby");
                final JPanel dm = new JPanel() {

                    @Override
                    public Dimension getPreferredSize() {
                        return new Dimension(320, 240);
                    }
                };
                dm.setBorder(BorderFactory.createLineBorder(Color.blue, 10));

                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(dm);
                frame.pack();
                frame.setLocationByPlatform(true);

                JMenuBar menuBar = new JMenuBar();
                JMenu fileMenu = new JMenu("File");
                menuBar.add(fileMenu);
                frame.setJMenuBar(menuBar);
                frame.setVisible(true);
            }
        });
    }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal