当前位置: 首页 > 面试题库 >

如何在Mac OS X上将JMenuBar移至屏幕菜单栏?

秦才
2023-03-14
问题内容

当我将其移至JMenuBarMac OS X上的屏幕菜单栏时,它将在菜单窗口中留出一些空白。我需要删除该空间。我在用

System.setProperty("apple.laf.useScreenMenuBar", "true")

将我JMenuBar移到屏幕菜单栏。我的一位使用Mac的朋友报告说,如果我没有设置该属性,则会在菜单上保留一些丑陋的垂直空间。解决此问题的最佳方法是什么?

编辑:这是我的来源的一个示例:

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

    JFrame frame = new JFrame("Gabby");
    final DesktopMain dm = new DesktopMain();

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(dm);
    frame.setSize(160, 144);
    frame.setLocationRelativeTo(null);
    frame.setIgnoreRepaint(true);

    JMenuBar menuBar = new JMenuBar();
    JMenu fileMenu = new JMenu("File");
    menuBar.add(fileMenu);

    // Populating the menu bar code goes here

    frame.setJMenuBar(menuBar);
    frame.setVisible(true);
}

问题答案:

根据完成的时间,在程序启动后设置属性可能为时已晚,无法生效。而是在启动时添加设置。

java -Dapple.laf.useScreenMenuBar=true -jar MyApplication.jar

或者,Info.plist如Mac OS X的Java部署选项,Java词典Info.phtml" target="_blank">list键,关于Info.plist键和Java运行时系统属性所述,在应用程序捆绑包中设置属性。

<key>Properties</key>
<dict>
    <key>apple.laf.useScreenMenuBar</key>
    <string>true</string>
    ...
</dict>

附录:如下所示,使用@Urs Reupke或本人建议的方法不会出现问题。您的(丢失)DesktopMain可能是错误的。

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);
            }
        });
    }
}


 类似资料:
  • 在我的应用程序中,我希望有类似facebook应用程序的行为,在点击图标时,我希望将整个屏幕向右移动,并在左侧显示一些菜单,如下所示: 点击菜单按钮前 点击菜单按钮后 一种方法是将这些菜单布局为黑色,并将其可见性设置为 但是在这种情况下,移动动画就不会像脸书上那样存在了。那么我们有什么办法可以做到这一点呢?

  • 我试图移动这个图像: 在我的PyGame屏幕上,从右到左再向后,但是随着图像的移动,每隔一秒左右我就会有一点屏幕撕裂,就像这样: 我使用的代码是类似于此的循环: 到目前为止,我已经尝试了以下方法来解决这个问题: 在创建屏幕时使用,,标志,这没有效果,我也调整了更新为(因为使用?)时建议使用此选项) 在GPU和CPU之间拆分内存(我在raspberry pi 2上运行此功能)我尝试过为这两个处理器提

  • 我有旧式菜单应用程序。在改变主题到全息和切换目标SDK版本到14后,软菜单按钮消失了(这是好的),但使用菜单按钮在操作栏显示文本菜单大部分离屏幕,你可以看到在附上的图像。你有什么办法解决这个问题吗? 我已经解决了。清单参数中有问题: 在改变了任何否认为真之后,这个问题就消失了。

  • 我已经为我的网站创建了一个汉堡包菜单,我希望它在更大的屏幕尺寸下完全消失。我希望在更大的屏幕尺寸下删除.在我的所有导航元素上显示的类。当我在更大的屏幕尺寸下运行时,我的汉堡包菜单保持打开。我不知道这个问题的解决方案是否简单,但我是一个在js的大块头,我不知道如何解决它。[小汉堡菜单][1] null null

  • 问题内容: 我有一个使用react native创建的登录屏幕。 当用户输入textInput时,如何将屏幕上移? 我是否要监听onFocus()事件并使用css样式来更改视图? 问题答案: 在2017年(RN 0.43),这方面有特殊的组成部分: KeyboardAvoidingView

  • 我正在将我的移动应用程序设置为在平板电脑中工作,其中一个需要调整的事情是菜单的fon t大小,在10英寸屏幕中太小了。所以我正在寻找一个全局变量来改变字体大小,就像你可以用和类似的东西 Dimens内部-wxxxdp/dimensis.xml 有没有人知道更改菜单大小的dimen资源的名称(如果是的话)? 奖励:所有地门资源列表