2012-10-30 24 views
0

请参阅下面的示例代码。它只是创建一个按钮并将其添加到窗口。但是,当选择* menu_item3 *时,ActionListener不会收到该事件。此错误仅在Java 7 for Mac上出现。如果我在Windows中运行这个相同的代码,它工作正常。当我在Mac 6上运行这个相同的代码时,它工作正常。如果我使用JFrame而不是JWindow,它可以正常工作。我不想使用JFrame,因为我不想显示窗口标题栏和边框。JWindow在Mac 7中没有收到针对Mac的事件

任何想法?

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."); 
     } 
    }); 
} 
} 

回答

0

我已经提交了一个Oracle的错误。仍然在等待他们的回应是否该错误将被正式提交。当我听到某事时,我会更新这个答案。

与此同时,我确实找到了一种可行的解决方法。我使用JFrame而不是JWindow。我不知道可以使用方法setUndecorated()删除JFrame的窗口标题和边框。另请注意,只有在帧不可显示时才能调用此方法。