如何在 Java 中修改 Mac LAF 的自动生成菜单和“关于”框?
Posted
技术标签:
【中文标题】如何在 Java 中修改 Mac LAF 的自动生成菜单和“关于”框?【英文标题】:How do I modify the auto-generated menu and "About" box of Mac LAF in Java? 【发布时间】:2014-04-26 17:04:03 【问题描述】:屏幕截图在菜单栏上显示了一个苹果(即系统菜单)应用程序菜单“GSPro”,其中包含关于和退出项目,ss 还显示了内置关于框的外观,可以修改为看起来更专业,有图标/转速/作者等。 这就是我在查找信息和好例子时遇到的麻烦。 文件菜单以后是我的应用程序生成的,在 Windows 中看起来是一样的,所以我知道我必须做的 Windows 菜单与 mac 的东西略有不同。
在 Mac 上,这称为 laf(外观和感觉)。
我的代码片段如下,还没有处理程序,只是测试它的显示方式......
public class GSPro
/**
* @param args
*/
public static void main(String[] args)
System.setProperty("apple.laf.useScreenMenuBar", "true");
JFrame frame = new JFrame();
frame.setExtendedState(frame.getExtendedState() | JFrame.MAXIMIZED_BOTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.setTitle("GSPro");
JMenuBar menuBar = new JMenuBar();
JMenu file = new JMenu("File");
menuBar.add(file);
JMenu edit = new JMenu("Edit");
menuBar.add(edit);
JMenuItem exit = new JMenuItem("New");
file.add(exit);
JMenuItem open = new JMenuItem("Open");
file.add(open);
file.addSeparator();
JMenuItem close = new JMenuItem("Close");
file.add(close);
file.addSeparator();
JMenuItem save = new JMenuItem("Save");
file.add(save);
JMenuItem saveas = new JMenuItem("Save As...");
file.add(saveas);
frame.setJMenuBar(menuBar);
【问题讨论】:
Java 是跨平台的,您为 Windows 和 Mac 创建的菜单是相同的。如果这就是你的意思。 谢谢,我做了很多 android 开发,所以 java 我可以让事情正常工作,但我正在开始一个项目,我想在 mac 和 windows 上看起来很专业,我只有一个 macbook,我请注意,有一个带有“about”和“quit”的苹果菜单,然后是我的编程菜单,我想修改 about 框以使其看起来更好,但找不到比启用外观或更改标题更多的信息,所以我有点理解一些东西,但其他东西似乎特定于所使用的系统......希望我说得通,我来自低水平的背景,所以没有围绕“主题”的“语言” 除非您发布代码和 \ 或图像,否则没人知道您的 about 框是什么样子或您希望它是什么样子。我无法为您提供关于to modify the about box to look better
凭空出现的帮助。
我尝试添加一些编辑/图像以尝试显示我的意思,但我没有声誉,我会尝试放在页面上并发布...
您在代码中显示一件事,在屏幕截图中显示另一件事。您仍然没有指定要实现的目标。编辑问题以显示“问题是什么,相关代码是什么?”。
【参考方案1】:
图标和版本信息来自application bundleproperties file(Info.plist)。创建一个包含图标和版本属性的应用程序包,您将看到“关于”对话框显示此信息。
不过,您最好制作自己的自定义“关于”对话框。我从未见过使用上面截屏的默认应用程序。此外,这将允许您跨平台使用相同的 About 对话框。以下是您在 OS X 上的操作方式:
public class Test implements com.apple.eawt.AboutHandler
public Test()
// comment these two lines to see the default About dialog
com.apple.eawt.Application app = com.apple.eawt.Application.getApplication();
app.setAboutHandler(this);
JFrame myFrame = new JFrame();
myFrame.setSize(200, 200);
myFrame.setVisible(true);
@Override
public void handleAbout(com.apple.eawt.AppEvent.AboutEvent ae)
JFrame aboutFrame = new JFrame();
aboutFrame.setSize(200, 200);
aboutFrame.add(new JLabel("About"));
aboutFrame.pack();
aboutFrame.setVisible(true);
public static void main(String[] args)
new Test();
【讨论】:
非常感谢你,我让它在 Eclipse 中工作,但不是马上。它给了我对库的访问限制,但我一直在搞砸直到它起作用。 (我真的不记得我做了什么!我随机按下按钮!)这一切似乎都非常复杂,因为我认为在一个地方写任何东西,但我会继续学习......再次感谢大家以上是关于如何在 Java 中修改 Mac LAF 的自动生成菜单和“关于”框?的主要内容,如果未能解决你的问题,请参考以下文章
在哪里或如何下载适用于 NetBeans 8.2 的 Darcula LAF?