Разное поведение в 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();
}
Я нашел проблемы, потому что это свойство отличается, так что конец его