4

我一直在运行在小程序上的 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" height="800" width="600" 
  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

谢谢

4

1 回答 1

4

代码在这里工作正常。我怀疑这是该 JRE 中的错误。

将代码更改为:

  1. 转储java.version&java.vendor
  2. 删除主要(这只会混淆事物) - 然后..
  3. 提出错误报告。

试机详情

从此属性小程序获得的详细信息:

Name            Value
java.vendor     Oracle Corporation
java.version    1.7.0_05
os.name         Windows 7
os.version      6.1

浏览器: 火狐15.0

于 2012-08-30T00:18:12.353 回答