Мне нужно написать Java Swing-приложение, которое будет работать и примерно одинаково на Linux, Windows и Ma c. И для практически всех создаваемых мной виджетов мне нужно добавить некоторую особую обработку, в том числе все должно иметь возможность открывать меню по запросу. Даже виджеты, такие как метки и кнопки.
Я могу ловить запросы меню, добавляя:
MouseListener m = new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e)
{
if (e.isPopupTrigger())
{
onMenuSummons(); //do my thing
}
}
};
addMouseListener(m);
в конструктор моего расширенного виджета.
Но я обеспокоен тем, что это Linux -только решение. Нужно только проверять isPopupEvent () в MousePressed? Как насчет MouseClicked? Я мог бы подключить оба, чтобы быть уверенным, но могу ли я рискнуть, что когда-нибудь на какой-то платформе будет одна функция isPopupEvent () для обеих функций мыши при одном и том же действии мыши?
В идеале MouseAdapter избавит меня от вопроса, предложив перезаписываемый popupRequest (MouseEvent e), но это не так. Так что же всегда правильно, работает везде на всех платформах и всегда будет решением навсегда?
Кроме того, некоторые из виджетов, которые я расширяю, могут иметь свои собственные всплывающие меню; Я должен подавить их и реализовать свои собственные. Как мне убедиться, что отображается только мое собственное меню? ТИА.