好的,我之前做过Swing应用程序,如果想要在应用程序菜单上显示不同的名称(通常在Mac上有“Preferences”和“Quit”选项),必须使用:System.setProperty(“com.apple.mrj.application.apple.menu.about.name”,“App name”);
并且必须在创建JFrame之前执行。我已经这样做了,但它仍然显示我的Main类名称作为菜单名称,就好像我根本没有写那行代码一样。我在Google上搜索了这个问题,但没找到有用的信息,然后我在这里搜索了一下,但每个遇到类似问题的人都是运行Java 1.5、1.6或1.7。所以我想也许与我的当前Java版本1.8有关。
这个,这个和这个都没有起作用。这个,这个和这个要么将我发送到过时的信息,要么链接不再起作用。另外,我正在运行Mac 10.8。
任何建议/答案将不胜感激。
一个更新:
这是我最初的代码:
package bouncing_off_axes;
/**
* This is the driver class of this program.
*
* @author Mason
*
*/
public class Main {
/**
* The driving method.
*
* @param args
*/
public static void main(String[] args) {
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Physics Engine Practice - Bouncing Balls");
SimulationController view = new SimulationController("Test");
}
}
以下是trashgod提供给其他人的解决方案:
package bouncing_off_axes;
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 https://dev59.com/5l_Va4cB1Zd3GeqPUYkC */
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);
}
});
}
}
显然我需要10点声誉才能发布图片,所以我不能向您展示结果,但它没有成功。
package bouncing_off_axes
。但是它没有起作用,菜单仍然显示类名而不是设置的名称。我将编辑我的帖子并放置我最初的代码和您提供的示例。此外,我想在代码中进行更改,而不是在命令行上进行更改。 - mistShakersetProperty()
方法在 Java 8 中会失败。为什么不将您的 JAR 添加到应用程序包中,例如:https://dev59.com/7m3Xa4cB1Zd3GeqPgJF9#14485964? - trashgod