Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mac上不会触发JAVA mouseClicked事件_Java_Macos_Events - Fatal编程技术网

Mac上不会触发JAVA mouseClicked事件

Mac上不会触发JAVA mouseClicked事件,java,macos,events,Java,Macos,Events,我编写了一个程序,其中包含两个使用鼠标侦听器的组件: ResizeRectangle使用控制柄绘制矩形,并允许移动和调整矩形的大小。它处理MouseEvents和MouseMotionEvents(MouseMove、MousePressed、MouseDragged和mouseerelease) IconGrid在矩形内绘制图标网格,并允许选择(单击)图标。它为此处理MouseClicked事件 在窗户下一切都很好。我今天尝试将程序移植到Mac上,但在那里,MouseClicked事件从未被触

我编写了一个程序,其中包含两个使用鼠标侦听器的组件:

  • ResizeRectangle使用控制柄绘制矩形,并允许移动和调整矩形的大小。它处理MouseEvents和MouseMotionEvents(MouseMove、MousePressed、MouseDragged和mouseerelease)
  • IconGrid在矩形内绘制图标网格,并允许选择(单击)图标。它为此处理MouseClicked事件
  • 在窗户下一切都很好。我今天尝试将程序移植到Mac上,但在那里,MouseClicked事件从未被触发。我将MouseClicked事件放在ResizeRectangle中,但在那里它也不会被触发。我把MouseRelease事件放在IconGrid中,它确实会被炒鱿鱼。所以问题似乎真的在于鼠标滑动事件

    我读到另一篇文章说,在Mac电脑上,鼠标按下和鼠标释放之间即使是一个小像素的变化也会导致鼠标被点击而不会被触发。但是,即使我在空中点击鼠标(这样就没有机会在新闻和发布之间移动鼠标),mouseClicked事件也不会被触发


    还有其他人有这个问题吗?这是Mac上的一个bug吗?

    我用JDK1.7在OS X上尝试了以下代码,我可以单击图标并触发侦听器。请随意修改此代码以符合您的情况,从而允许我们重现问题并将其包含在您的问题中

    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.io.IOException;
    import java.net.URL;
    
    public class MouseClickedIcon {
    
      public static void showUI() throws IOException {
        JFrame testFrame = new JFrame( "TestFrame" );
    
        String imageSource = "http://www.mynewitguys.com/wp-content/uploads/2011/04/java1.png";
    
        ImageIcon icon = new ImageIcon( ImageIO.read( new URL( imageSource ) ) );
        JLabel label = new JLabel( icon );
        label.addMouseListener( new MouseAdapter() {
          @Override
          public void mouseClicked( MouseEvent e ) {
            System.out.println( "MouseClickedIcon.mouseClicked" );
          }
        } );
        testFrame.add( label, BorderLayout.CENTER );
        testFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        testFrame.pack();
        testFrame.setVisible( true );
      }
    
      public static void main( String[] args ) {
        EventQueue.invokeLater( new Runnable() {
          @Override
          public void run() {
            try {
              showUI();
            } catch ( IOException e ) {
            }
          }
        } );
      }
    }
    

    已获取错误的来源。我在虚拟机(VMWARE)中运行OSX,并检查了鼠标兼容性选项,这导致了MouseClicked事件的问题。很抱歉给您添麻烦。

    我不知道您是如何让鼠标轻松工作的,因为在cocoa中没有这样的方法(也没有鼠标滑动、鼠标按下)。方法有mouseenterned、mouseexitted、mouseDown、mouseDragged、mouseMoved和mouseUp。@rdelmar这是Java的问题,Java有这些事件1)您使用的GUI库是什么?摆动AWT?SWT?另外我认为这些信息与这次讨论有点密切关系。2)如果在不久的将来没有合适的答案,请考虑创建一个小的可编译和可运行的程序,我们可以检查、运行、测试和修改,这表明您的问题,并且没有与手头问题无关的无关代码,AN。我也尝试过这段代码,但是我得到了与此代码相同的问题。鼠标被勾住了,无法识别。我添加了鼠标,这确实会被触发。今天下载并安装了最新的Netbeans 7.1.1。使用JDK1.6运行,这可能就是问题所在。稍后将尝试1.7。我对vmware也有同样的问题。你能告诉我你改变了什么,现在对你有用吗?