アプレット上で動作する 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 ユーザーはいますか?
Mac用の最新のOracle JRE(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
ありがとう