Swing: событие мыши на JTree или других компонентах иногда пропускается
Мне нужно показать всплывающее меню на моем JTree, и я добавил слушателя мыши так:
tree.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent me){
if (SwingUtilities.isRightMouseButton(me)){
//.. some code to show popup menu
}
}
});
Но иногда это событие просто пропускается: я нажал, но mouseClicked()
не называется. То же самое происходит с JTabbedPane
: я делаю правый клик на какой-то вкладке, а иногда mouseClicked()
не вызывается, но вкладка становится фактически переключенной.
UPD: это происходит примерно в 10% кликов. Слишком часто, чтобы игнорировать это.
Кстати могу добавить ChangeListener
на такие JTabpedPane
И это событие никогда не пропускается, но мне тоже нужно обращаться с мышью, и я абсолютно не знаю, что здесь может быть не так.
Любая помощь приветствуется.
1 ответ
Я предполагаю, что проблема в том, что в 10% кликов вы на самом деле не кликаете, а начинаете и заканчиваете перетаскивание. Вот почему событие mouseClicked не работает.
Попробуйте прослушать событие mousePressed или mouseReleased MouseAdapter (зависит от того, какое поведение вы хотите) вместо события mouseClicked.