Я пытаюсь создать значок на панели задач с двумя всплывающими меню, одно из которых должно вызываться левой кнопкой мыши, а другое - правой. AWT предлагает простой способ создания PopupMenu, но невозможно вызвать меню левой кнопкой мыши, не делая невидимым JFrame или что-то в этом роде. Итак, я узнаю, что качели JPopupMenu могут вызываться любой из кнопок мыши. Но у JPopupMenu есть ошибка (я не знаю, действительно ли это ошибка или я не так хорош в Java), которая не скрывается, когда я нажимаю мышь вне JPopupMenu. Я пытался использовать функцию прослушивателя мыши mouseExited, но она работает только на границе JPopupMenu. Если мышь покидает границу JPopupMenu, она скрывается, и я не могу нажать ни одну из кнопок JPopupMenu. Может быть, у кого-то была такая же проблема, и может помочь мне узнать, как заставить ее работать правильно.
public static JPopupMenu jpm;
public static TrayIcon ti;
public static void main(String args[]) throws IOException, AWTException,
ClassNotFoundException, InstantiationException,
IllegalAccessException, UnsupportedLookAndFeelException {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
SystemTray st = SystemTray.getSystemTray();
Image icon = ImageIO.read(SipLogin.class
.getResource("/resources/phone-yellow-small.png"));
ti = new TrayIcon(icon, "Sip login", null);
jpm = new JPopupMenu();
JMenuItem jmi1 = new JMenuItem("JMenuItem1");
JMenuItem jmi2 = new JMenuItem("JMenuItem2");
JMenuItem jmi3 = new JMenuItem("JMenuItem3");
JMenuItem jmi4 = new JMenuItem("JMenuItem4");
ti.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
jpm.setLocation(e.getX(), e.getY());
jpm.setInvoker(jpm);
jpm.setVisible(true);
}
}
});
jpm.add(jmi1);
jpm.add(jmi2);
jpm.add(jmi3);
jpm.add(jmi4);
jpm.addMouseListener(new MouseAdapter() {
public void mouseExited(MouseEvent e) {
jpm.setVisible(false);
}
});
st.add(ti);
}
mouseExited
у тебя не работает.. - person predi   schedule 18.07.2013