JFrame を最大化するときに、Swing によってマウスの位置を処理するという奇妙な動作に遭遇しました。
この非常に単純なコードを実行すると...
public class Test {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
JMenuBar menubar = new JMenuBar();
JMenu menu = new JMenu("File");
menu.add(new JMenuItem("New"));
menubar.add(menu);
frame.setJMenuBar(menubar);
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
... 通常はFile
(最初のクリック - 押す、離す) -> New
(2 回目のクリック) をクリックできます。しかし、JFrame を最大化してクリックするとFile
、マウスを離すとすぐにコンテキスト メニューが消えます。New
さらに、マウス ボタンを押したままにすると (消失を防ぐために)、アイテムにフォーカスするにはマウスをさらに動かさなければなりません。
New
赤い点は、マウス ボタンを押したままにしてフォーカスするためにマウスを移動する必要がある領域 (多かれ少なかれ) を表しFile
ます。
JFreeChart のチャートを右クリックするときなど、「右クリック コンテキスト メニュー」を使用するときに同じ動作を観察しました。
OracleのJDKを使っていたのでJDKの問題かと思いましたが、OpenJDKをインストールしたら同じ結果になりました。
誰かがこの奇妙な行動を観察しましたか? それとも、明らかな何かが欠けていますか?
私が使う:
- 1.7.0_147-icedtea (または java-7-oracle の場合は 1.7.0_04)
- OpenJDK ランタイム環境 (IcedTea7 2.0) (7~b147-2.0-0ubuntu0.11.10.1)
- OpenJDK 64 ビット サーバー VM (ビルド 21.0-b17、混合モード)
- Linux Mint 12 (リサ) GNOME 3.2.1