Mac OS X 10.9 中的 Java Swing GUI

标签 java macos swing user-interface

实现 Mac OS X 外观之后,刚刚阅读完

我注意到两个问题。

  1. 虽然 JMenuBar 现在显示在 Mac 栏中,但如果我单击 JMenuItem,则不会调用任何事件。使用:System.setProperty("apple.laf.useScreenMenuBar", "true");
  2. 使用 System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Name"); 在栏中显示的名称是在项目的创建。

界面: GUI


我正在尝试 Java OS X Lion Set application name doesn't work解决第二个问题。我无法从命令行启动 jar,所以我使用 Martjin 答案。

最佳答案

example cited开始,

  1. JMenuItem 监听器在单击 File > Item 时打印“Here”。

  2. about.name 属性是 About 对话框中的名称,如下所示,但该属性当前被忽略。

image

经测试:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;

/**
 * @see https://stackoverflow.com/a/22766921/230513
 * @see https://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");
                JMenuItem item = new JMenuItem("Item");
                fileMenu.add(item);
                item.addActionListener(new ActionListener() {

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        System.out.println("Here");
                    }
                });
                menuBar.add(fileMenu);
                frame.setJMenuBar(menuBar);
                frame.setVisible(true);
            }
        });
    }
}

关于Mac OS X 10.9 中的 Java Swing GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765816/

相关文章:

java - 如何在安装了 Apache Tomcat 的 UNIX 机器上安装 PHP

java - 找不到 com.google.android.gms.internal.zzbck 的类文件

windows - 安全更新

Java ImageIcon.GetImage 挂

java - 使用多个 java 概念的箭头悲伤游戏

java - JTable 在 JScrollPane 内正确对齐

java - 插入到InsnList的几个节点之前

java - 用java解析一个css文件

swift - 根据另一个场景中的选择设置第一个场景中项目的启用

c - Mac OS X 上可执行文件的文件格式