在实现Mac OS X外观后,只需阅读
我发现了两个问题。
JMenuBar
显示在Mac栏中,如果我点击JMenuItem
,则不会调用任何事件。使用:System.setProperty("apple.laf.useScreenMenuBar", "true");
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Name");
在条形图中显示的名称是项目主题中给出的名称。界面:
我正在尝试Java OS X Lion Set application name doesn't work来解决第二个问题。我无法从命令行启动jar,所以我正在使用Martjin的答案。
答案 0 :(得分:2)
从example cited开始,
JMenuItem
监听器打印"此处"点击File > Item
时。
about.name
属性是About
对话框中的名称,如下所示,但该属性目前已被忽略。
经测试:
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);
}
});
}
}