ホームページ > Java > &#&チュートリアル > JMenuBar が Mac OS X 画面のメニュー バーに空白スペースを残すのはなぜですか?

JMenuBar が Mac OS X 画面のメニュー バーに空白スペースを残すのはなぜですか?

Susan Sarandon
リリース: 2024-10-29 08:20:02
オリジナル
293 人が閲覧しました

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

Mac OS X での JMenuBar の移動に関する問題

Mac OS X 環境で JMenuBar を画面メニュー バーに移動しようとすると、多くの場合、ウィンドウ内のメニューが存在する場所には空白スペースが残されます。この問題は、適切なタイミングでプロパティ「apple.laf.useScreenMenuBar」を確立することで解決できます。

解決策

この問題に対処するには、プロパティ「apple」を設定します。次のいずれかの方法を使用してプログラム起動時に .laf.useScreenMenuBar" を使用します:

  1. 起動コマンド: 起動コマンドにプロパティ設定を含めます:
java -Dapple.laf.useScreenMenuBar=true -jar MyApplication.jar
ログイン後にコピー
  1. Info.plist の変更: アプリケーション バンドルの Info.plist ファイルにプロパティを追加します:
<key>Properties</key>
<dict>
    <key>apple.laf.useScreenMenuBar</key>
    <string>true</string>
    ...
</dict>
ログイン後にコピー

その他の考慮事項

アプリケーションの起動後にプロパティを設定しても効果がない可能性があることに注意することが重要です。次のコードは、空白スペースが存在しない正しい実装を示しています:

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);
            }
        });
    }
}
ログイン後にコピー

以上がJMenuBar が Mac OS X 画面のメニュー バーに空白スペースを残すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート