WindowsLookAndFeel中的不同行为

时间:2015-04-03 08:24:54

标签: java swing look-and-feel jpopupmenu windows-look-and-feel

我想显示一个弹出菜单,使用Metal L& F它会做这些行为。

  • 单击:打印“按下”并显示菜单
  • 双击:打印“按下”并显示菜单。

是的,我需要它。但是当使用WindowsLookAndFeel时,它与那些不一样。 当两次按下时它只是隐藏菜单而不是打印“按下”。为什么它在两个L& F之间有不同的行为?

 import javax.swing.*;
 import java.awt.event.*;

 public class Popup {
    public static void main(String[] args) {
        JFrame f = new JFrame();
        f.setSize(300, 300);
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        JPopupMenu menu = new JPopupMenu();
        menu.add("item");
        f.addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                System.out.println("pressed");
            }
        });
        f.addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                menu.show(f, e.getX(), e.getY());
            }
        });
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }
 }

请提供一些建议。

1 个答案:

答案 0 :(得分:0)

boolean consumeEvent = UIManager.getBoolean("PopupMenu.consumeEventOnClose");
// Consume the event so that normal processing stops.
if(consumeEvent && !(src instanceof MenuElement)) {
    me.consume();
}

我发现了问题,因为这个属性不同 所以结束它