在最大化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);
            }
        });
    }
}

…我通常可以点击文件(首次点击 – 按,发布) – >新的(第二次点击).但是当我最大化JFrame并单击文件时 – 上下文菜单会立即在鼠标释放时消失.
此外,当我按住鼠标按钮 – 以防止消失 – 我必须进一步移动鼠标以关注新项目.

红点代表区域(或多或少),按下文件并按住鼠标按钮后,我必须将鼠标移动到焦点上.


我在使用“右键单击上下文菜单”时观察到相同的行为,例如右键单击JFreeChart中的图表时.

我认为这是JDK问题,因为我使用的是Oracle的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(lisa)GNOME 3.2.1

解决方法:

是的 – 这是JDK7中的一个错误,如@nIcE cOw所述.

我已经安装了JDK6,我无法重现这个bug.

java version "1.6.0_23"
OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10.2)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)

标签: linux, java, swing

相关文章推荐

添加新评论,含*的栏目为必填