摆动菜单 Java 7 mac osx
Posted
技术标签:
【中文标题】摆动菜单 Java 7 mac osx【英文标题】:Swing menus Java 7 mac osx 【发布时间】:2012-08-24 05:14:09 【问题描述】:我一直在运行在小程序上的 mac os x 上测试我的 Swing 应用程序。
当我在浏览器中运行这个小程序时,我注意到 JMenus/JMenuItems 上的鼠标悬停不能正常工作。
这是一个重现问题的小程序:
package com.macosx.tests;
import java.applet.Applet;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class Example extends JApplet
JMenuBar bar;
JMenu file, edit;
JMenuItem new1, save, close;
private void doStart()
bar = new JMenuBar();
file = new JMenu("File");
edit = new JMenu("Edit");
new1 = new JMenuItem("New");
save = new JMenuItem("Save");
close = new JMenuItem("Close");
setJMenuBar(bar);
bar.add(file);
bar.add(edit);
file.add(new1);
file.add(save);
file.add(close);
@Override
public void start()
try
SwingUtilities.invokeAndWait(new Runnable()
public void run()
doStart();
);
catch (Exception e)
throw new RuntimeException(e);
使用此代码,生成一个 .jar 文件。在 Eclipse 中,您可以使用导出功能,并且只需确保将 Main-Class 定义为上述类。
一旦你运行了 jar,创建一个包含内容的 html 文件:
<html>
<head>
<title>Menu test Applet</title>
</head>
<body>
<applet id="appletID"
code="com.macosx.tests.Example"
archive="tests.jar">
</applet>
</div>
</body>
</html>
在此之后,运行 html 文件并检查菜单:它们不应接收鼠标悬停事件。 难道我做错了什么?这是一个Java错误吗? 有没有 Mac 用户来测试这个问题?
我正在运行带有最新 Oracle JRE for mac (http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1637588.html) 的 Mac OSX 10.7.4。使用 Firefox 进行测试。
java.vendor Oracle Corporation
java.version 1.7.0_06
os.name Mac OS X
os.version 10.7.4
谢谢
【问题讨论】:
不要在没有充分考虑和充分理由的情况下混合 Swing 和 AWT 组件。始终如一地使用 Swing。有关详细信息,请参阅Mixing heavy and light components。 您能否发布您提交的错误报告的链接? @whiskeyspider: bugs.sun.com/bugdatabase/view_bug.do?bug_id=7194878 老实说,我认为他们永远不会解决这个问题。 Apple 也在尝试从他们的系统中删除 java,因此如果您想在 applet 中运行应用程序,您将遇到许多其他问题。 【参考方案1】:代码在这里运行良好。我怀疑这是该 JRE 中的错误。
将代码改为:
-
转储
java.version
& java.vendor
删除主要内容(这只会使事情变得混乱) - 然后..
提交错误报告。
测试机详情
从这个properties applet获得的详细信息:
Name Value
java.vendor Oracle Corporation
java.version 1.7.0_05
os.name Windows 7
os.version 6.1
浏览器: FireFox 15.0
【讨论】:
出于好奇,您使用的是哪个 JRE?您是否在浏览器中运行了小程序?如果我将程序作为应用程序运行,则可以正常工作。只有在浏览器中运行小程序时才会出现问题。顺便说一句,如果您使用重量级弹出窗口,这也使用 jre6u33 发生,根据mail.openjdk.java.net/pipermail/swing-dev/2012-March/…,这是 Java 7 中的默认设置。 在我测试过的任何 JRE 版本的 Windows 或 Linux 中都不会出现此问题。这只发生在 Mac OS X 上。我针对这个问题提出了一个错误。谢谢 好。让我们了解进展/新闻。 我在使用 JComboBox 时遇到了同样的问题。当鼠标悬停在 Mac 小程序上的项目上时,该项目不会突出显示。在 Windows 上它工作得很好。您可以在 Windows 和 Mac 上运行此在线摇摆小程序演示 linkk 并查看不同之处。为了解决这个问题,我使用了实现鼠标悬停事件的代码。 感谢您的反馈。您应该将该评论转化为答案。以上是关于摆动菜单 Java 7 mac osx的主要内容,如果未能解决你的问题,请参考以下文章
非级联类型的菜单栏项目在 Mac OSX 的 Tkinter 上不起作用