Разное поведение в WindowsLookAndFeel

Я хочу показать всплывающее меню, при использовании 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 ответ

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

Я нашел проблемы, потому что это свойство отличается, так что конец его

Другие вопросы по тегам