Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.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
JWindow在Java 7 for Mac中不接收事件_Java_Macos_Java 7_Jwindow - Fatal编程技术网

JWindow在Java 7 for Mac中不接收事件

JWindow在Java 7 for Mac中不接收事件,java,macos,java-7,jwindow,Java,Macos,Java 7,Jwindow,请参见下面的示例代码。它只是创建一个按钮并将其添加到窗口中。但是,当选择*menu\U item3*时,ActionListener不会接收事件。此错误仅在Java 7 for Mac上发生。如果我在Windows中运行相同的代码,它就可以正常工作。当我在Java6forMac上运行同样的代码时,它运行得很好。如果我使用JFrame而不是JWindow,它可以正常工作。我不想使用JFrame,因为我不想显示窗口标题栏和边框 有什么想法吗 public class SandBox { publi

请参见下面的示例代码。它只是创建一个按钮并将其添加到窗口中。但是,当选择*menu\U item3*时,ActionListener不会接收事件。此错误仅在Java 7 for Mac上发生。如果我在Windows中运行相同的代码,它就可以正常工作。当我在Java6forMac上运行同样的代码时,它运行得很好。如果我使用JFrame而不是JWindow,它可以正常工作。我不想使用JFrame,因为我不想显示窗口标题栏和边框

有什么想法吗

public class SandBox {
 public static JFrame frame = new JFrame();
 public static JPopupMenu menu = new JPopupMenu();
 public static JLabel button = new JLabel();

 public static void main(String[] args) {
     JFrame window = new JFrame();
     JPanel panel = new JPanel();

     JMenuItem menu_item1 = new JMenuItem("Item1");
     JMenuItem menu_item2 = new JMenuItem("Item2");
     JMenuItem menu_item3 = new JMenuItem("Item3");

     menu.add(menu_item1);
     menu.add(menu_item2);
     menu.add(menu_item3);
     menu.setEnabled(true);

     button.setText("Button");
     button.setBorder(BorderFactory.createMatteBorder(4, 4, 4, 4, new Color(255,0,0)));
     button.setSize(100, 24);
     button.add(menu);
     button.setVisible(true);
     button.setEnabled(true);

     panel.add(button);
     panel.setVisible(true);

     window.add(panel);
     window.setVisible(true);
     window.setLocation(100, 100);
     window.setAlwaysOnTop(true);
     window.setFocusable(true);
     window.setFocusableWindowState(true);
     window.pack();

     frame.setVisible(false);

     button.addMouseListener(new MouseAdapter() {
         public void mouseClicked(MouseEvent e) {
             menu.show(button, 0, 0);
         }
     });

     menu_item3.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e){
             JOptionPane.showMessageDialog(frame, "Eggs are not supposed to be green.");
         }
     });
 }
}

我向Oracle提交了一个bug。仍在等待他们的答复,是否会正式提交该漏洞。当我听到一些事情时,我会更新这个答案

与此同时,我确实找到了一个可行的解决办法。我使用JFrame而不是JWindow。我不知道您可以使用该方法删除JFrame的窗口标题和边框。还要注意,只有当帧不可显示时才能调用此方法